diff options
author | Antenore Gatta <antenore@simbiosi.org> | 2014-07-15 01:38:29 +0400 |
---|---|---|
committer | Antenore Gatta <antenore@simbiosi.org> | 2014-07-15 01:38:29 +0400 |
commit | dba37040048857fff218a74f5bbb791d22a504ba (patch) | |
tree | 8ba6a75fed94e3d0b17f4b63d89cfb79132a2309 /remmina-plugins/rdp | |
parent | ff81efcb08576ca659b775a659195f22a48aed09 (diff) | |
parent | fe1c9f72b535fd9ccbdaf70b75327e9840582508 (diff) |
Merge github.com:repzilon/Remmina into antenore_20140714
Test repzilon fixes
Diffstat (limited to 'remmina-plugins/rdp')
-rw-r--r-- | remmina-plugins/rdp/16x16/emblems/remmina-rdp-ssh.png | bin | 900 -> 803 bytes | |||
-rw-r--r-- | remmina-plugins/rdp/16x16/emblems/remmina-rdp.png | bin | 867 -> 747 bytes | |||
-rw-r--r-- | remmina-plugins/rdp/22x22/emblems/remmina-rdp-ssh.png | bin | 1392 -> 1273 bytes | |||
-rw-r--r-- | remmina-plugins/rdp/22x22/emblems/remmina-rdp.png | bin | 1323 -> 1181 bytes | |||
-rw-r--r-- | remmina-plugins/rdp/rdp_cliprdr.c | 3 | ||||
-rw-r--r-- | remmina-plugins/rdp/rdp_event.c | 13 | ||||
-rw-r--r-- | remmina-plugins/rdp/rdp_gdi.c | 2 | ||||
-rw-r--r-- | remmina-plugins/rdp/rdp_graphics.c | 26 | ||||
-rw-r--r-- | remmina-plugins/rdp/rdp_plugin.c | 2 |
9 files changed, 35 insertions, 11 deletions
diff --git a/remmina-plugins/rdp/16x16/emblems/remmina-rdp-ssh.png b/remmina-plugins/rdp/16x16/emblems/remmina-rdp-ssh.png Binary files differindex 15ec78a18..9defcd6f6 100644 --- a/remmina-plugins/rdp/16x16/emblems/remmina-rdp-ssh.png +++ b/remmina-plugins/rdp/16x16/emblems/remmina-rdp-ssh.png diff --git a/remmina-plugins/rdp/16x16/emblems/remmina-rdp.png b/remmina-plugins/rdp/16x16/emblems/remmina-rdp.png Binary files differindex 2ede1faf7..2d7724312 100644 --- a/remmina-plugins/rdp/16x16/emblems/remmina-rdp.png +++ b/remmina-plugins/rdp/16x16/emblems/remmina-rdp.png diff --git a/remmina-plugins/rdp/22x22/emblems/remmina-rdp-ssh.png b/remmina-plugins/rdp/22x22/emblems/remmina-rdp-ssh.png Binary files differindex cf2ec0cd7..e977bb3b7 100644 --- a/remmina-plugins/rdp/22x22/emblems/remmina-rdp-ssh.png +++ b/remmina-plugins/rdp/22x22/emblems/remmina-rdp-ssh.png diff --git a/remmina-plugins/rdp/22x22/emblems/remmina-rdp.png b/remmina-plugins/rdp/22x22/emblems/remmina-rdp.png Binary files differindex fa9623842..feb093c09 100644 --- a/remmina-plugins/rdp/22x22/emblems/remmina-rdp.png +++ b/remmina-plugins/rdp/22x22/emblems/remmina-rdp.png diff --git a/remmina-plugins/rdp/rdp_cliprdr.c b/remmina-plugins/rdp/rdp_cliprdr.c index 313aa1b75..972b06c43 100644 --- a/remmina-plugins/rdp/rdp_cliprdr.c +++ b/remmina-plugins/rdp/rdp_cliprdr.c @@ -112,7 +112,7 @@ static UINT8* lf2crlf(UINT8* data, int* size) return outbuf; } -static void crlf2lf(UINT8* data, int* size) +static void crlf2lf(UINT8* data, size_t* size) { UINT8 c; UINT8* out; @@ -252,6 +252,7 @@ void remmina_rdp_cliprdr_process_data_response(RemminaProtocolWidget* gp, RDP_CB data = Stream_Buffer(s); size = Stream_Length(s); + Stream_Free(s, TRUE); pixbuf = gdk_pixbuf_loader_new(); gdk_pixbuf_loader_write(pixbuf, data, size, NULL); Stream_Free(s, TRUE); diff --git a/remmina-plugins/rdp/rdp_event.c b/remmina-plugins/rdp/rdp_event.c index 8dacbe292..5b536d220 100644 --- a/remmina-plugins/rdp/rdp_event.c +++ b/remmina-plugins/rdp/rdp_event.c @@ -677,16 +677,24 @@ static void remmina_rdp_event_connected(RemminaProtocolWidget* gp, RemminaPlugin static void remmina_rdp_event_create_cursor(RemminaProtocolWidget* gp, RemminaPluginRdpUiObject* ui) { - cairo_surface_t* surface; GdkPixbuf* pixbuf; rfContext* rfi = GET_DATA(gp); rdpPointer* pointer = (rdpPointer*)ui->cursor.pointer; +#if GTK_VERSION == 3 + cairo_surface_t* surface; UINT8* data = malloc(pointer->width * pointer->height * 4); +#else + guchar *data = g_malloc0(pointer->width * pointer->height * 4); +#endif freerdp_alpha_cursor_convert(data, pointer->xorMaskData, pointer->andMaskData, pointer->width, pointer->height, pointer->xorBpp, rfi->clrconv); +#if GTK_VERSION == 3 surface = cairo_image_surface_create_for_data(data, CAIRO_FORMAT_ARGB32, pointer->width, pointer->height, cairo_format_stride_for_width(CAIRO_FORMAT_ARGB32, pointer->width)); pixbuf = gdk_pixbuf_get_from_surface(surface, 0, 0, pointer->width, pointer->height); cairo_surface_destroy(surface); +#else + pixbuf = gdk_pixbuf_new_from_data(data, GDK_COLORSPACE_RGB, TRUE, 8, pointer->width, pointer->height, (pointer->width * 4), NULL, NULL); +#endif ((rfPointer*)ui->cursor.pointer)->cursor = gdk_cursor_new_from_pixbuf(rfi->display, pixbuf, pointer->xPos, pointer->yPos); } @@ -695,7 +703,10 @@ static void remmina_rdp_event_free_cursor(RemminaProtocolWidget* gp, RemminaPlug rfContext* rfi = GET_DATA(gp); g_mutex_lock(rfi->gmutex); + /* Ugly leak with GTK2, otherwise g_object_unref segfaults */ +#if GTK_VERSION == 3 g_object_unref(ui->cursor.pointer->cursor); +#endif ui->cursor.pointer->cursor = NULL; g_cond_signal(rfi->gcond); g_mutex_unlock(rfi->gmutex); diff --git a/remmina-plugins/rdp/rdp_gdi.c b/remmina-plugins/rdp/rdp_gdi.c index edf29df65..e1d0ab4c5 100644 --- a/remmina-plugins/rdp/rdp_gdi.c +++ b/remmina-plugins/rdp/rdp_gdi.c @@ -127,7 +127,7 @@ static void rf_gdi_surface_bits(rdpContext* context, SURFACE_BITS_COMMAND* surfa } else if (surface_bits_command->codecID == RDP_CODEC_ID_NONE) { - bitmap = (UINT8*) malloc(surface_bits_command->width * surface_bits_command->height * 4); + bitmap = (UINT8*) calloc(1, surface_bits_command->width * surface_bits_command->height * 4); freerdp_image_flip(surface_bits_command->bitmapData, bitmap, surface_bits_command->width, surface_bits_command->height, 32); diff --git a/remmina-plugins/rdp/rdp_graphics.c b/remmina-plugins/rdp/rdp_graphics.c index 1fa429785..e1065a316 100644 --- a/remmina-plugins/rdp/rdp_graphics.c +++ b/remmina-plugins/rdp/rdp_graphics.c @@ -49,7 +49,7 @@ void rf_Bitmap_New(rdpContext* context, rdpBitmap* bitmap) data = freerdp_image_convert(bitmap->data, NULL, bitmap->width, bitmap->height, rfi->srcBpp, rfi->bpp, rfi->clrconv); - if (bitmap->ephemeral != true) + if (bitmap->ephemeral != TRUE) { image = XCreateImage(rfi->display, rfi->visual, rfi->depth, ZPixmap, 0, (char*) data, bitmap->width, bitmap->height, rfi->scanline_pad, 0); @@ -57,13 +57,13 @@ void rf_Bitmap_New(rdpContext* context, rdpBitmap* bitmap) XPutImage(rfi->display, pixmap, rfi->gc, image, 0, 0, 0, 0, bitmap->width, bitmap->height); XFree(image); - if (data != bitmap->data) - xfree(data); + if (data != bitmap->data) && (data != NULL) + free(data); } else { - if (data != bitmap->data) - xfree(bitmap->data); + if (data != bitmap->data) && (data != NULL) + free(bitmap->data); bitmap->data = data; } @@ -135,7 +135,7 @@ void rf_Bitmap_Decompress(rdpContext* context, rdpBitmap* bitmap, status = bitmap_decompress(data, bitmap->data, width, height, length, bpp, bpp); - if (status != true) + if (status != TRUE) { printf("Bitmap Decompression Failed\n"); } @@ -145,7 +145,7 @@ void rf_Bitmap_Decompress(rdpContext* context, rdpBitmap* bitmap, freerdp_image_flip(data, bitmap->data, width, height, bpp); } - bitmap->compressed = false; + bitmap->compressed = FALSE; bitmap->length = size; bitmap->bpp = bpp; #endif @@ -186,7 +186,11 @@ void rf_Pointer_Free(rdpContext* context, rdpPointer* pointer) RemminaPluginRdpUiObject* ui; rfContext* rfi = (rfContext*) context; +#if GTK_VERSION == 2 + if (((rfPointer*) pointer)->cursor != NULL) +#else if (G_IS_OBJECT(((rfPointer*) pointer)->cursor)) +#endif { ui = g_new0(RemminaPluginRdpUiObject, 1); ui->type = REMMINA_RDP_UI_CURSOR; @@ -196,7 +200,11 @@ void rf_Pointer_Free(rdpContext* context, rdpPointer* pointer) rf_queue_ui(rfi->protocol_widget, ui); g_mutex_lock(rfi->gmutex); +#if GTK_VERSION == 2 + while (((rfPointer*) pointer)->cursor != NULL) +#else while (G_IS_OBJECT(((rfPointer*) pointer)->cursor)) +#endif { g_cond_wait(rfi->gcond, rfi->gmutex); } @@ -355,6 +363,7 @@ void rf_register_graphics(rdpGraphics* graphics) pointer = (rdpPointer*) malloc(sizeof(rdpPointer)); ZeroMemory(pointer, sizeof(rdpPointer)); + pointer->size = sizeof(rfPointer); pointer->New = rf_Pointer_New; @@ -364,10 +373,12 @@ void rf_register_graphics(rdpGraphics* graphics) pointer->SetDefault = rf_Pointer_SetDefault; graphics_register_pointer(graphics, pointer); + free(pointer); glyph = (rdpGlyph*) malloc(sizeof(rdpGlyph)); ZeroMemory(glyph, sizeof(rdpGlyph)); + glyph->size = sizeof(rfGlyph); glyph->New = rf_Glyph_New; @@ -377,5 +388,6 @@ void rf_register_graphics(rdpGraphics* graphics) glyph->EndDraw = rf_Glyph_EndDraw; graphics_register_glyph(graphics, glyph); + free(glyph); } diff --git a/remmina-plugins/rdp/rdp_plugin.c b/remmina-plugins/rdp/rdp_plugin.c index 7ab89ec7c..6c1e3cca9 100644 --- a/remmina-plugins/rdp/rdp_plugin.c +++ b/remmina-plugins/rdp/rdp_plugin.c @@ -306,7 +306,7 @@ static BOOL remmina_rdp_post_connect(freerdp* instance) pointer_cache_register_callbacks(instance->update); /* - if (rfi->sw_gdi != true) + if (rfi->sw_gdi != TRUE) { glyph_cache_register_callbacks(instance->update); brush_cache_register_callbacks(instance->update); |