From dcbeedb4d40f358e033456bc2d9a26eed509d863 Mon Sep 17 00:00:00 2001 From: akallabeth Date: Tue, 20 Aug 2024 12:39:35 +0200 Subject: [PATCH] [client,x11] fix a possible deadlock on desktop resize --- client/X11/xf_client.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/client/X11/xf_client.c b/client/X11/xf_client.c index 85d3560eb..f8942cc16 100644 --- a/client/X11/xf_client.c +++ b/client/X11/xf_client.c @@ -458,12 +458,14 @@ static BOOL xf_sw_desktop_resize(rdpContext* context) xfContext* xfc = (xfContext*)context; rdpSettings* settings = context->settings; BOOL ret = FALSE; - xf_lock_x11(xfc); if (!gdi_resize(gdi, freerdp_settings_get_uint32(settings, FreeRDP_DesktopWidth), freerdp_settings_get_uint32(settings, FreeRDP_DesktopHeight))) - goto out; + return FALSE; + /* Do not lock during gdi_resize, there might still be drawing operations in progress. + * locking will deadlock. */ + xf_lock_x11(xfc); if (xfc->image) { xfc->image->data = NULL;