Skip to content

winex11: Check layered client surfaces against the extended style. - #337

Open
nanomatters wants to merge 377 commits into
ValveSoftware:bleeding-edgefrom
nanomatters:winex11-layered-client-surface
Open

winex11: Check layered client surfaces against the extended style.#337
nanomatters wants to merge 377 commits into
ValveSoftware:bleeding-edgefrom
nanomatters:winex11-layered-client-surface

Conversation

@nanomatters

@nanomatters nanomatters commented Jul 5, 2026

Copy link
Copy Markdown
Contributor

WS_EX_LAYERED is stored in GWL_EXSTYLE but needs_offscreen_rendering() was testing it against GWL_STYLE. This causes layered client surface windows to miss the offscreen compositing path.

The implementation is different on upstream wine, so it is specific to proton wine.

Paul Gofman and others added 30 commits April 30, 2026 18:08
We assume a span is never empty and therefore can never begin at the
right bound. An empty span there can break the requirement in
combine_regions_to_spans() that current span Y coordinates are never less
than the loop Y coordinate. Empty spans also break the in_left and
in_right calculation.

Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=59678
(cherry picked from commit 762e452)
(cherry picked from commit 5d255e8)

CW-Bug-Id: #26633
…ackend.

HACK: winebus: Disable SDL2.30 new behavior for the SDL unix backend.

Starting with 517a3d20e8cf ("Support calling SteamAPI_InitEx() before
SDL_Init(SDL_INIT_GAMEPAD)") SDL no longer respects overriding
SteamVirtualGamepadInfo using hint system. It queries env varaible using
`SDL_getenv_unsafe()` so we have to completely unset it for
`winedevice.exe`.

SDL also has a hack that disables overriding if SDL_GetExeName() ==
"wine64-preloader" but that doesn't work on ARM64.

CW-Bug-Id: #23185
CW-Bug-Id: #27027
…void a Mutter Wayland bug.

CW-Bug-Id: #26914
This reverts commit c6398fa.

This is no longer needed because the game replaced EAC with BattlEye.
Enumerating source nodes while at it.

(cherry picked from commit addbf54)
Leaving the original branch untouched, so we can still use its nodes to
further iterate over desired and optional connections.

(cherry picked from commit d94e691)
…surrounding branch.

(cherry picked from commit 6e30b14)

CW-Bug-Id: #26148
(cherry picked from commit 622651f)

CW-Bug-Id: #26148
…r().

msctf: Return stub interface from ThreadMgr_GetFunctionProvider().

CW-Bug-Id: #26995
msctf: HACK: Stub ITfFnReconversion function.

CW-Bug-Id: #26995
…me().

(cherry picked from commit f27a9b6)
(preemptive cherry-pick)
…f others present.

Fixes a regression introduced by d48e8d0.

Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=59690
(cherry picked from commit 866547f)
(preemptive cherry-pick)
Needed by Xalia to properly scroll some winforms controls.
shaunren and others added 29 commits June 18, 2026 18:10
(cherry picked from commit 2b11697)

CW-Bug-Id: #27003
If a requested controller slot is not currently open, rescan the
controllers before reporting the slot as not connected. This matches
native Windows behaviour, which can be inferred from [1].

The game RiME (and possibly others), upon receiving a device addition
WM_DEVICECHANGE message, immediately queries all four slots with
XInputGetState(), and gives up if none are unavailable. Without the
rescan, the game's query can race with the xinput update thread and
cause hotplugging failure.

[1] https://learn.microsoft.com/en-us/windows/win32/xinput/getting-started-with-xinput#getting-controller-state

(cherry picked from commit 2963e78)

CW-Bug-Id: #27003
Support WINE_CPU_TOPOLOGY=p[n], similar to Windows
ProcessorCountLieForHybridCPU compatibility shim.

Based on findings by Paulo Zanoni <paulo.r.zanoni@intel.com> in
ValveSoftware/Proton#9880.

CW-Bug-Id: #27255
…r_state.

This allows dwPacketNumber to be incremented properly, and also allows
others fields to retain their previous values in case of read failure.

(cherry picked from commit c7720f8)

CW-Bug-Id: #27003
…init.

(cherry picked from commit b88cbc4)

CW-Bug-Id: #27003
This reverts commit e1b3211.

No longer needed with FEX's unixlib.
…ndling."

This reverts commit 28c7d11.

No longer needed with FEX's unixlib.
This reverts commit c1b93e2.

No longer needed with FEX's unixlib.
CM_Get_Device_ID_ExW() reserved no room for the terminating null in its
size check, which might overwrite outside the buffer bounds.

(cherry picked from commit b39db98)

CW-Bug-Id: #27303
…EG splitter is chosen instead for MPEGs."

This reverts commit e870f31.

The commit itself is not wrong but WMVideo Decoder DMO currently doesn't work with Proton transcoding.

CW-Bug-Id: #27265
Fixes games that toggle DEP at runtime. Like Bioshock.

(cherry picked from commit c57ec80)
WS_EX_LAYERED is stored in GWL_EXSTYLE but needs_offscreen_rendering()
was testing it against GWL_STYLE. This causes layered client surface
windows to miss the offscreen compositing path.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.