Implement red/blue swap.
This commit is contained in:
parent
6595c91864
commit
72d7e44420
@ -53,7 +53,8 @@ void guac_vnc_cursor(rfbClient* client, int x, int y, int w, int h, int bpp) {
|
|||||||
|
|
||||||
guac_client* gc = rfbClientGetClientData(client, __GUAC_CLIENT);
|
guac_client* gc = rfbClientGetClientData(client, __GUAC_CLIENT);
|
||||||
guac_socket* socket = gc->socket;
|
guac_socket* socket = gc->socket;
|
||||||
const guac_layer* cursor_layer = ((vnc_guac_client_data*) gc->data)->cursor;
|
vnc_guac_client_data* guac_client_data = (vnc_guac_client_data*) gc->data;
|
||||||
|
const guac_layer* cursor_layer = guac_client_data->cursor;
|
||||||
|
|
||||||
/* Cairo image buffer */
|
/* Cairo image buffer */
|
||||||
int stride = cairo_format_stride_for_width(CAIRO_FORMAT_ARGB32, w);
|
int stride = cairo_format_stride_for_width(CAIRO_FORMAT_ARGB32, w);
|
||||||
@ -111,7 +112,10 @@ void guac_vnc_cursor(rfbClient* client, int x, int y, int w, int h, int bpp) {
|
|||||||
blue = (v >> client->format.blueShift) * 0x100 / (client->format.blueMax + 1);
|
blue = (v >> client->format.blueShift) * 0x100 / (client->format.blueMax + 1);
|
||||||
|
|
||||||
/* Output ARGB */
|
/* Output ARGB */
|
||||||
*(buffer_current++) = (alpha << 24) | (red << 16) | (green << 8) | blue;
|
if (guac_client_data->swap_red_blue)
|
||||||
|
*(buffer_current++) = (alpha << 24) | (blue << 16) | (green << 8) | red;
|
||||||
|
else
|
||||||
|
*(buffer_current++) = (alpha << 24) | (red << 16) | (green << 8) | blue;
|
||||||
|
|
||||||
/* Next VNC pixel */
|
/* Next VNC pixel */
|
||||||
fb_current += bpp;
|
fb_current += bpp;
|
||||||
@ -139,6 +143,7 @@ void guac_vnc_cursor(rfbClient* client, int x, int y, int w, int h, int bpp) {
|
|||||||
void guac_vnc_update(rfbClient* client, int x, int y, int w, int h) {
|
void guac_vnc_update(rfbClient* client, int x, int y, int w, int h) {
|
||||||
|
|
||||||
guac_client* gc = rfbClientGetClientData(client, __GUAC_CLIENT);
|
guac_client* gc = rfbClientGetClientData(client, __GUAC_CLIENT);
|
||||||
|
vnc_guac_client_data* guac_client_data = (vnc_guac_client_data*) gc->data;
|
||||||
guac_socket* socket = gc->socket;
|
guac_socket* socket = gc->socket;
|
||||||
|
|
||||||
int dx, dy;
|
int dx, dy;
|
||||||
@ -155,8 +160,8 @@ void guac_vnc_update(rfbClient* client, int x, int y, int w, int h) {
|
|||||||
unsigned char* fb_row_current;
|
unsigned char* fb_row_current;
|
||||||
|
|
||||||
/* Ignore extra update if already handled by copyrect */
|
/* Ignore extra update if already handled by copyrect */
|
||||||
if (((vnc_guac_client_data*) gc->data)->copy_rect_used) {
|
if (guac_client_data->copy_rect_used) {
|
||||||
((vnc_guac_client_data*) gc->data)->copy_rect_used = 0;
|
guac_client_data->copy_rect_used = 0;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -207,7 +212,10 @@ void guac_vnc_update(rfbClient* client, int x, int y, int w, int h) {
|
|||||||
blue = (v >> client->format.blueShift) * 0x100 / (client->format.blueMax + 1);
|
blue = (v >> client->format.blueShift) * 0x100 / (client->format.blueMax + 1);
|
||||||
|
|
||||||
/* Output RGB */
|
/* Output RGB */
|
||||||
*(buffer_current++) = (red << 16) | (green << 8) | blue;
|
if (guac_client_data->swap_red_blue)
|
||||||
|
*(buffer_current++) = (blue << 16) | (green << 8) | red;
|
||||||
|
else
|
||||||
|
*(buffer_current++) = (red << 16) | (green << 8) | blue;
|
||||||
|
|
||||||
fb_current += bpp;
|
fb_current += bpp;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user