1From 29c87ee9c3aac4811880d3a0d844ba311813be4f Mon Sep 17 00:00:00 2001 2From: Jeffy Chen <jeffy.chen@rock-chips.com> 3Date: Fri, 9 Aug 2019 10:01:15 +0800 4Subject: [PATCH 5/5] client: X11: Disable complex regions by default 5 6Doing complex regions update is very slow with xserver 2d 7accels(exa/glamor), let's disable it by default. 8 9Use "XFREERDP_COMPLEX_REGIONS" environment to enable it. 10 11Signed-off-by: Jeffy Chen <jeffy.chen@rock-chips.com> 12--- 13 client/X11/xf_client.c | 3 +++ 14 client/X11/xf_gdi.c | 5 +++++ 15 2 files changed, 8 insertions(+) 16 17diff --git a/client/X11/xf_client.c b/client/X11/xf_client.c 18index bd3eb0d..c846642 100644 19--- a/client/X11/xf_client.c 20+++ b/client/X11/xf_client.c 21@@ -1939,6 +1939,9 @@ static BOOL xfreerdp_client_new(freerdp* instance, rdpContext* context) 22 xfc->_NET_SUPPORTED = XInternAtom(xfc->display, "_NET_SUPPORTED", True); 23 xfc->_NET_SUPPORTING_WM_CHECK = XInternAtom(xfc->display, "_NET_SUPPORTING_WM_CHECK", True); 24 25+ if (!getenv("XFREERDP_COMPLEX_REGIONS")) 26+ xfc->complex_regions = FALSE; 27+ 28 if ((xfc->_NET_SUPPORTED != None) && (xfc->_NET_SUPPORTING_WM_CHECK != None)) 29 { 30 Atom actual_type = 0; 31diff --git a/client/X11/xf_gdi.c b/client/X11/xf_gdi.c 32index 4f52853..cde6904 100644 33--- a/client/X11/xf_gdi.c 34+++ b/client/X11/xf_gdi.c 35@@ -994,6 +994,11 @@ static BOOL xf_gdi_update_screen(xfContext* xfc, const BYTE* pSrcData, UINT32 sc 36 XSetFunction(xfc->display, xfc->gc, GXcopy); 37 XSetFillStyle(xfc->display, xfc->gc, FillSolid); 38 39+ if (!xfc->complex_regions) { 40+ nbRects = 1; 41+ rects = region16_extents(pRegion); 42+ } 43+ 44 for (i = 0; i < nbRects; i++) 45 { 46 UINT32 left = rects[i].left; 47-- 482.20.1 49 50