case 0:
/* Send black rectangle */
- guac_protocol_send_rect(client->socket,
- GUAC_COMP_OVER, current_layer,
+ guac_protocol_send_rect(client->socket, current_layer,
dstblt->nLeftRect, dstblt->nTopRect,
- dstblt->nWidth, dstblt->nHeight,
+ dstblt->nWidth, dstblt->nHeight);
+
+ guac_protocol_send_cfill(client->socket,
+ GUAC_COMP_OVER, current_layer,
0, 0, 0, 255);
+
break;
/* Unsupported ROP3 */
/* If blackness, send black rectangle */
case 0x00:
- guac_protocol_send_rect(client->socket,
- GUAC_COMP_OVER, current_layer,
+ guac_protocol_send_rect(client->socket, current_layer,
memblt->nLeftRect, memblt->nTopRect,
- memblt->nWidth, memblt->nHeight,
+ memblt->nWidth, memblt->nHeight);
+
+ guac_protocol_send_cfill(client->socket,
+ GUAC_COMP_OVER, current_layer,
0x00, 0x00, 0x00, 0xFF);
break;
/* If whiteness, send white rectangle */
case 0xFF:
- guac_protocol_send_rect(client->socket,
- GUAC_COMP_OVER, current_layer,
+ guac_protocol_send_rect(client->socket, current_layer,
memblt->nLeftRect, memblt->nTopRect,
- memblt->nWidth, memblt->nHeight,
+ memblt->nWidth, memblt->nHeight);
+
+ guac_protocol_send_cfill(client->socket,
+ GUAC_COMP_OVER, current_layer,
0xFF, 0xFF, 0xFF, 0xFF);
break;
const guac_layer* current_layer = ((rdp_guac_client_data*) client->data)->current_surface;
- guac_protocol_send_rect(client->socket,
- GUAC_COMP_OVER, current_layer,
+ guac_protocol_send_rect(client->socket, current_layer,
opaque_rect->nLeftRect, opaque_rect->nTopRect,
- opaque_rect->nWidth, opaque_rect->nHeight,
+ opaque_rect->nWidth, opaque_rect->nHeight);
+
+ guac_protocol_send_cfill(client->socket,
+ GUAC_COMP_OVER, current_layer,
(color >> 16) & 0xFF,
(color >> 8 ) & 0xFF,
(color ) & 0xFF,
guac_client* client = ((rdp_freerdp_context*) context)->client;
const guac_layer* current_layer = ((rdp_guac_client_data*) client->data)->current_surface;
+ /* Reset clip */
+ guac_protocol_send_reset(client->socket, current_layer);
+
/* Set clip if specified */
- if (bounds != NULL)
- guac_protocol_send_clip(
- client->socket,
- current_layer,
- bounds->left,
- bounds->top,
+ if (bounds != NULL) {
+ guac_protocol_send_rect(client->socket, current_layer,
+ bounds->left, bounds->top,
bounds->right - bounds->left + 1,
bounds->bottom - bounds->top + 1);
- /* Otherwise, reset clip */
- else
- guac_protocol_send_clip(
- client->socket,
- current_layer,
- 0, 0,
- context->instance->settings->width,
- context->instance->settings->height);
+ guac_protocol_send_clip(client->socket, current_layer);
+ }
}
const guac_layer* current_layer = ((rdp_guac_client_data*) client->data)->current_surface;
/* Colorize glyph */
- guac_protocol_send_rect(client->socket,
+ guac_protocol_send_rect(client->socket, ((guac_rdp_glyph*) glyph)->layer,
+ 0, 0, glyph->cx, glyph->cy);
+
+ guac_protocol_send_cfill(client->socket,
GUAC_COMP_ATOP, ((guac_rdp_glyph*) glyph)->layer,
- 0, 0, glyph->cx, glyph->cy,
guac_client_data->foreground.red,
guac_client_data->foreground.green,
guac_client_data->foreground.blue,
guac_client_data->background.red = (bgcolor & 0xFF0000) >> 16;
/* Paint background on destination */
- guac_protocol_send_rect(client->socket,
+ guac_protocol_send_rect(client->socket, current_layer,
+ x, y, width, height);
+
+ guac_protocol_send_cfill(client->socket,
GUAC_COMP_OVER, current_layer,
- x, y, width, height,
guac_client_data->background.red,
guac_client_data->background.green,
guac_client_data->background.blue,