From 2cf9ceba66ba3c0d57d85fa618711920d477d3fe Mon Sep 17 00:00:00 2001 From: akallabeth Date: Tue, 16 Sep 2025 16:49:15 +0200 Subject: [PATCH] [client,x11] disable output during rail/desktop switch --- client/X11/xf_rail.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/client/X11/xf_rail.c b/client/X11/xf_rail.c index 10c60e5d9..8b1821d61 100644 --- a/client/X11/xf_rail.c +++ b/client/X11/xf_rail.c @@ -80,10 +80,17 @@ void xf_rail_enable_remoteapp_mode(xfContext* xfc) WINPR_ASSERT(xfc); if (!xfc->remote_app) { + rdpGdi* gdi = xfc->common.context.gdi; + WINPR_ASSERT(gdi); + + const BOOL old = gdi->suppressOutput; + gdi->suppressOutput = TRUE; xfc->remote_app = TRUE; xfc->drawable = xf_CreateDummyWindow(xfc); xf_DestroyDesktopWindow(xfc, xfc->window); xfc->window = NULL; + + gdi->suppressOutput = old; } } @@ -92,11 +99,19 @@ void xf_rail_disable_remoteapp_mode(xfContext* xfc) WINPR_ASSERT(xfc); if (xfc->remote_app) { + rdpGdi* gdi = xfc->common.context.gdi; + WINPR_ASSERT(gdi); + + const BOOL old = gdi->suppressOutput; + gdi->suppressOutput = TRUE; + xfc->remote_app = FALSE; xf_DestroyDummyWindow(xfc, xfc->drawable); xf_destroy_window(xfc); xf_create_window(xfc); xf_create_image(xfc); + + gdi->suppressOutput = old; } }