From: Alexandros Frantzis alexandros.frantzis@collabora.com
We don't need to set the win32u current mode when we are in virtual desktop mode, and, additionally, skipping this avoids a deadlock, since the virtual desktop get_current_mode() implementation recurses into win32u.
Signed-off-by: Alexandros Frantzis alexandros.frantzis@collabora.com Fixes: 4232312dffe1cd115aa6bfd755f5b7c6a403e3fc Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=54781 --- dlls/winex11.drv/display.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/dlls/winex11.drv/display.c b/dlls/winex11.drv/display.c index 75b585ff201..c60ffd1bc5b 100644 --- a/dlls/winex11.drv/display.c +++ b/dlls/winex11.drv/display.c @@ -585,7 +585,12 @@ 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 ); + /* We don't need to set the win32u current mode when we are in + * virtual desktop mode, and, additionally, skipping this avoids a + * deadlock, since the desktop get_current_mode() implementation + * 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;