Instead of a single configure serial, which is simply not enough to mitigate event feedback loops.
This should (hopefully) address the recent d3d8:device / d3d9:device test failures on the Gitlab CI, without having to add more `flush_events` calls to the tests.
I believe it should also provide a more general fix to this race condition than the configure_serial mechanism.
-- v5: d3d9/tests: Remove now unnecesary d3d9ex todo_wine / flaky. winex11: Try updating client window config on (_NET_)_WM_STATE updates. winex11: Try updating client window state on ConfigureNotify. winex11: Request only one _NET_WM_STATE bit change at a time. winex11: Remove now unnecessary (net_)wm_state window members. winex11: Get rid of the now unnecessary unmap_window helper. winex11: Request window state updates asynchronously. winex11: Try updating the client window state in net_wm_state_notify. winex11: Request window config updates asynchronously. winex11: Introduce a new window_update_client_config helper. winex11: Simplify the control flow in ConfigureNotify handlers. winex11: Introduce a new window_update_client_state helper. winex11: Simplify the control flow in WM_STATE handlers. winex11: Avoid updating _NET_WM_STATE on iconic windows. winex11: Tweak the WM_TAKE_FOCUS event time to workaround a FVWM bug. winex11: Ignore focus changes during WM_STATE updates. winex11: Get rid of the now unnecessary mapped window data flag. winex11: Use desired_state wm_state to decide of the mapped flag. winex11: Call window_set_wm_state when unmapping embedded windows. winex11: Get rid of the unnecessary net_wm_state window data member. winex11: Get rid of the now unnecessary iconic window data flag. winex11: Use pending_state wm_state to decide whether a window is currently iconic. winex11: Use pending_state to decide whether to set fullscreen monitor property. winex11: Use pending_state wm_state to decide if requests can be made directly. winex11: Compute WM_STATE notify updates in term of style changes. winex11: Compute ConfigureNotify updates in term of style changes. winex11: Compute WindowPosChanged updates in term of style changes. winex11: Avoid requesting unnecessary window config changes. winex11: Avoid requesting unnecessary _NET_WM_STATE changes. winex11: Track window config requests and updates. winex11: Introduce a new window_set_config helper. winex11: Track _NET_WM_STATE window property requests and updates. winex11: Introduce a new window_set_net_wm_state helper. winex11: Introduce a new window_set_wm_state helper. winex11: Track _XEMBED_INFO window property changes. winex11: Introduce a new window state tracker. winex11: Move embedded check in update_net_wm_states / sync_window_style. winex11: Move ConfigureNotify checks after computing visible rect. winex11: Rename read_net_wm_state to get_window_net_wm_state. winex11: Set configure_serial when resizing on display mode change. winex11: Avoid processing RRNotify events in xrandr14_get_id. d3d9/tests: Use static class for the dummy window. d3d9/tests: Avoid creating visible windows concurrently. wined3d: Check that format_id is >= 0 before assuming it's an index.
This merge request has too many patches to be relayed via email. Please visit the URL below to see the contents of the merge request. https://gitlab.winehq.org/wine/wine/-/merge_requests/6569
v4: Completely refactor the window state/config tracking instead, requesting changes in a more asynchronous and as-needed basis.
It passes the tests much more consistently locally, including with other WM (though each still has their own specific event sequences and not pass the tests the same way), but let's see if the CI likes it.