From: Michael Jumper Date: Thu, 12 Apr 2012 08:19:56 +0000 (-0700) Subject: Merge branch 'unstable' into clipboard X-Git-Url: http://git.alex.org.uk?hp=-c Merge branch 'unstable' into clipboard --- f20bdc8145f2af8e7508966c0d3b6d05cc2aab60 diff --combined src/client.c index caca83f,8a87d05..87823ad --- a/src/client.c +++ b/src/client.c @@@ -91,10 -91,6 +91,10 @@@ enum ARGS_IDX IDX_COLOR_DEPTH }; +int __guac_receive_channel_data(freerdp* rdp_inst, int channelId, uint8* data, int size, int flags, int total_size) { + return freerdp_channels_data(rdp_inst, channelId, data, size, flags, total_size); +} + boolean rdp_freerdp_pre_connect(freerdp* instance) { rdpContext* context = instance->context; @@@ -106,9 -102,6 +106,9 @@@ rdpPrimaryUpdate* primary; CLRCONV* clrconv; + /* Load clipboard plugin */ + freerdp_channels_load_plugin(channels, instance->settings, "cliprdr", NULL); + /* Init color conversion structure */ clrconv = xnew(CLRCONV); clrconv->alpha = 1; @@@ -152,6 -145,7 +152,7 @@@ xfree(pointer); /* Set up GDI */ + instance->update->EndPaint = guac_rdp_gdi_end_paint; instance->update->Palette = guac_rdp_gdi_palette_update; instance->update->SetBounds = guac_rdp_gdi_set_bounds; @@@ -199,10 -193,6 +200,6 @@@ boolean rdp_freerdp_post_connect(freerd client->mouse_handler = rdp_guac_client_mouse_handler; client->key_handler = rdp_guac_client_key_handler; - /* Send size */ - guac_protocol_send_size(client->socket, GUAC_DEFAULT_LAYER, - instance->settings->width, instance->settings->height); - return true; } @@@ -281,7 -271,6 +278,7 @@@ int guac_client_init(guac_client* clien rdp_inst = freerdp_new(); rdp_inst->PreConnect = rdp_freerdp_pre_connect; rdp_inst->PostConnect = rdp_freerdp_post_connect; + rdp_inst->ReceiveChannelData = __guac_receive_channel_data; /* Allocate FreeRDP context */ rdp_inst->context_size = sizeof(rdp_freerdp_context); @@@ -400,6 -389,17 +397,17 @@@ /* Send connection name */ guac_protocol_send_name(client->socket, settings->window_title); + /* Send size */ + guac_protocol_send_size(client->socket, GUAC_DEFAULT_LAYER, + settings->width, settings->height); + + /* Create glyph surfaces */ + guac_client_data->opaque_glyph_surface = cairo_image_surface_create( + CAIRO_FORMAT_RGB24, settings->width, settings->height); + + guac_client_data->trans_glyph_surface = cairo_image_surface_create( + CAIRO_FORMAT_ARGB32, settings->width, settings->height); + /* Success */ return 0;