Revert "server: Don't invalidate the newly exposed child region on the parent if it doesn't clip children."
This reverts commit 33617af8145b6fadfe41d48968a728ff57b3064b.
Apparently, the aforementioned commit might cause the expose region to
be incorrectly computed when a window transitions from invisible state
to visible state.
The commit also had caused regression in the following apps:
- Wine regedit.exe (bug 54268)
- Dn-FamiTracker (bug 52903)
- Unity Assets Bundle Extractor (same cause behind bug 52903)
It appears that the commit catalyzes discovery of hidden bugs in Wine's
window repaint logic. It's also possible that the algorithm for
computing the expose region is incomplete.
For these reasons, revert this commit for now.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=54268
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=52903
--
v3: Revert "server: Don't invalidate the newly exposed child region on the parent if it doesn't clip children."
https://gitlab.winehq.org/wine/wine/-/merge_requests/2342
FFXIV depends on this. It calls SetFullscreenState when it receives WM_WINDOWPOSCHANGED. Through luck the recursion aborts after two calls. The user-visible bug is that after leaving fullscreen, the game's window is still TOPMOST because we overwrite the stored pre-fullscreen window flags.
--
v4: dxgi/tests: Test nested SetFullscreenState from the same thread.
dxgi/tests: Test nested fullscreen application from different thread.
dxgi: Catch nested SetFullscreenState invocations.
dxgi: Unlock the wined3d mutex after storing the new target.
dxgi/tests: Run test_swapchain_window_messages on d3d12.
dxgi: Call wined3d_swapchain_state_set_fullscreen in d3d12_swapchain_init.
dxgi/tests: Run test_resize_target_wndproc on d3d12 too.
dxgi/tests: Fix UnregisterClass call in test_resize_target_wndproc.
https://gitlab.winehq.org/wine/wine/-/merge_requests/1964