9c12d337
by R��mi Bernon at 2025-12-05T11:10:27+01:00
win32u: Introduce a D3DKMT escape code to set fullscreen present rect.
These calls are Wine-specific and expected to fail on Windows, as the
escape codes and parameter combinations are likely invalid there. There
doesn't seem to be any mechanism to do this otherwise.
When a window presentation rect has been set, the window is meant to be
presented to that rect on screen exactly, mapped to physical coords.
Then this also has the following side effects:
* In exclusive fullscreen mode, GDI drawn child windows are clipped out
of the rendered screen, regardless of the normal clipping rules.
* The window position and size changes should be ignored wrt its visible
area, and in particular the window should not be unmapped even if its
Win32 rect is moved to an invisible location.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=58844
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=58443
3c99dab7
by R��mi Bernon at 2025-12-05T11:10:31+01:00
wined3d: Use the backbuffer size rather than client rect when fullscreen.
The client rect might be empty or invalid. Fallout 3 in particular does
a bogus call sequence after restoring minimized window which causes the
window and client rects to be empty:
SetRect(&rect, 0, 0, width, height);
AdjustWindowRectEx(&rect, style, FALSE, 0);
SetWindowPos(hwnd, 0, rect.left, rect.bottom, rect.right - rect.left,
rect.top - rect.bottom, 0);
We either need to hook the window messages and inhibit such window size
changes, or we need to avoid relying on client and window rect when in
fullscreen mode.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=58844
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=58443