From: Alexandros Frantzis alexandros.frantzis@collabora.com
The virtual desktop handler implementation of get_current_mode() calls into win32u and causes a deadlock, but we also do no need to set the win32u registry/current modes for the virtual desktop.
Signed-off-by: Alexandros Frantzis alexandros.frantzis@collabora.com --- dlls/winex11.drv/display.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/dlls/winex11.drv/display.c b/dlls/winex11.drv/display.c index 75b585ff201..6891a6b35fc 100644 --- a/dlls/winex11.drv/display.c +++ b/dlls/winex11.drv/display.c @@ -585,7 +585,11 @@ BOOL X11DRV_UpdateDisplayDevices( const struct gdi_device_manager *device_manage asciiz_to_unicode( devname, buffer ); if (!settings_handler.get_id( devname, is_primary, &settings_id )) break;
- settings_handler.get_current_mode( settings_id, ¤t_mode ); + /* Get the current mode, but only if we are not not using the desktop + * handler, since the desktop handler get_current_mode() recurses into + * win32u. */ + if (handler != &desktop_handler) + settings_handler.get_current_mode( settings_id, ¤t_mode ); if (!settings_handler.get_modes( settings_id, EDS_ROTATEDMODE, &modes, &mode_count )) continue;