The test shows that during RedrawWindow( ... RDW_ERASENOW ...) WM_NCPAINT delivery is not waited on the RedrawWindow() thread if the window is on another thread. It is still delivered directly to window procedure without showing up in PeekMessage(), and is processed synchronously if window is on the same thread. That corresponds to SendNotifyMessage() behaviour.
Fixes Warhammer: Vermintide 2 hanging during the game start. The game redraws desktop window (RedrawWindow(NULL, NULL, NULL, …
[View More]RDW_INVALIDATE | RDW_ERASE | RDW_ALLCHILDREN | RDW_ERASENOW | RDW_FRAME)). During that all the windows are getting updated and might be hitting that SendMessage in question. This hangs when it comes to the game's launcher's (minimized) window which is another process and doesn't process message queue at this point.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/452
[View Less]
All these patches are required to fix Cladun X2 crash at start.
--
v2: winex11.drv: Don't compare error event serial if it's zero.
winex11.drv: Lock display when expecting error events.
winex11.drv: Handle X errors from glXCopyContext().
https://gitlab.winehq.org/wine/wine/-/merge_requests/416