https://bugs.winehq.org/show_bug.cgi?id=35863
--- Comment #2 from Austin English austinenglish@gmail.com --- (In reply to Henri Verbeet from comment #1)
Can you reliably reproduce this? I've seen this happen on occasion, but not often enough to really investigate. What I suspect is happening is that the SendMessageTimeoutW() call in X11DRV_resize_desktop() aborts/times out because we're busy changing the display mode.
That seems to be the case, yes. As discussed on IRC: diff --git a/dlls/winex11.drv/desktop.c b/dlls/winex11.drv/desktop.c index 603e19f..7f36f8e 100644 --- a/dlls/winex11.drv/desktop.c +++ b/dlls/winex11.drv/desktop.c @@ -279,7 +279,7 @@ void X11DRV_resize_desktop( unsigned int width, unsigned int height ) SWP_NOZORDER | SWP_NOACTIVATE | SWP_DEFERERASE ); ungrab_clipping_window(); SendMessageTimeoutW( HWND_BROADCAST, WM_DISPLAYCHANGE, screen_bpp, - MAKELPARAM( width, height ), SMTO_ABORTIFHUNG, 2000, NULL ); + MAKELPARAM( width, height ), SMTO_BLOCK, 2000, NULL ); }
EnumWindows( update_windows_on_desktop_resize, (LPARAM)&resize_data );
works around the issue on my machine (whereas increasing the timeout to 200000 did not).