From 7dbeeb2df65293bceeadc7a4f65ed7b6c00941b2 Mon Sep 17 00:00:00 2001 From: Armin Novak Date: Thu, 21 Jul 2016 13:00:57 +0200 Subject: [PATCH] Fixed hardware GDI. --- client/X11/xf_client.c | 14 ++++++++------ client/X11/xf_gdi.c | 12 +++++++++--- 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/client/X11/xf_client.c b/client/X11/xf_client.c index c2733b37d..293e689e0 100644 --- a/client/X11/xf_client.c +++ b/client/X11/xf_client.c @@ -1104,18 +1104,15 @@ static BOOL xf_pre_connect(freerdp* instance) settings->OrderSupport[NEG_LINETO_INDEX] = TRUE; settings->OrderSupport[NEG_POLYLINE_INDEX] = TRUE; settings->OrderSupport[NEG_MEMBLT_INDEX] = settings->BitmapCacheEnabled; - settings->OrderSupport[NEG_MEM3BLT_INDEX] = (settings->SoftwareGdi) ? TRUE : - FALSE; + settings->OrderSupport[NEG_MEM3BLT_INDEX] = TRUE; settings->OrderSupport[NEG_MEMBLT_V2_INDEX] = settings->BitmapCacheEnabled; settings->OrderSupport[NEG_MEM3BLT_V2_INDEX] = FALSE; settings->OrderSupport[NEG_SAVEBITMAP_INDEX] = FALSE; settings->OrderSupport[NEG_GLYPH_INDEX_INDEX] = TRUE; settings->OrderSupport[NEG_FAST_INDEX_INDEX] = TRUE; settings->OrderSupport[NEG_FAST_GLYPH_INDEX] = TRUE; - settings->OrderSupport[NEG_POLYGON_SC_INDEX] = (settings->SoftwareGdi) ? FALSE : - TRUE; - settings->OrderSupport[NEG_POLYGON_CB_INDEX] = (settings->SoftwareGdi) ? FALSE : - TRUE; + settings->OrderSupport[NEG_POLYGON_SC_INDEX] = TRUE; + settings->OrderSupport[NEG_POLYGON_CB_INDEX] = TRUE; settings->OrderSupport[NEG_ELLIPSE_SC_INDEX] = FALSE; settings->OrderSupport[NEG_ELLIPSE_CB_INDEX] = FALSE; PubSub_SubscribeChannelConnected(instance->context->pubSub, @@ -1222,6 +1219,11 @@ static BOOL xf_post_connect(freerdp* instance) } xf_gdi_register_update_callbacks(update); + brush_cache_register_callbacks(instance->update); + glyph_cache_register_callbacks(instance->update); + bitmap_cache_register_callbacks(instance->update); + offscreen_cache_register_callbacks(instance->update); + palette_cache_register_callbacks(instance->update); } #ifdef WITH_XRENDER diff --git a/client/X11/xf_gdi.c b/client/X11/xf_gdi.c index 1f86f45ed..a1dc606fa 100644 --- a/client/X11/xf_gdi.c +++ b/client/X11/xf_gdi.c @@ -612,11 +612,17 @@ static BOOL xf_gdi_polyline(rdpContext* context, static BOOL xf_gdi_memblt(rdpContext* context, MEMBLT_ORDER* memblt) { - xfBitmap* bitmap = (xfBitmap*) memblt->bitmap; - xfContext* xfc = (xfContext*) context; + xfBitmap* bitmap; + xfContext* xfc; BOOL ret = TRUE; - if (!xfc->display || !xfc->drawing) + if (!context || !memblt) + return FALSE; + + bitmap = (xfBitmap*) memblt->bitmap; + xfc = (xfContext*) context; + + if (!bitmap || !xfc || !xfc->display || !xfc->drawing) return FALSE; xf_lock_x11(xfc, FALSE);