This completely refactors the winex11 window state tracking, keeping track of the desired/pending/current window state and config in a fully asynchronous way, and avoiding duplicate requests. I believe this mitigates various race conditions that we're suffering from, solving most spurious event feedback loops when the X11 state is being applied while some win32 state change is being requested, and fixing the spurious d3d/ddraw/user32 test failures.
--
v9: winex11: Request window state updates asynchronously.
winex11: Update the window client config on window state changes.
winex11: Wait for pending ConfigureNotify before updating the client state.
winex11: Wait for pending _NET_WM_STATE before updating the client state.
winex11: Don't expect WM_STATE events on override-redirect windows.
winex11: Listen to PropertyNotify events on the virtual desktop window.
https://gitlab.winehq.org/wine/wine/-/merge_requests/6569
This completely refactors the winex11 window state tracking, keeping track of the desired/pending/current window state and config in a fully asynchronous way, and avoiding duplicate requests. I believe this mitigates various race conditions that we're suffering from, solving most spurious event feedback loops when the X11 state is being applied while some win32 state change is being requested, and fixing the spurious d3d/ddraw/user32 test failures.
--
v8: winex11: Request window state updates asynchronously.
winex11: Update the window client config on window state changes.
winex11: Wait for pending ConfigureNotify before updating the client state.
winex11: Wait for pending _NET_WM_STATE before updating the client state.
winex11: Don't expect WM_STATE events on override-redirect windows.
winex11: Listen to PropertyNotify events on the virtual desktop window.
https://gitlab.winehq.org/wine/wine/-/merge_requests/6569