[Git][wine/wine][master] win32u: Process every driver event in NtUserGetAsyncKeyState.

"Alexandre Julliard (@julliard) via Wine-commits" <[email protected]>
Newsgroups gmane.comp.emulators.wine.cvs
Message-ID <[email protected]>

Alexandre Julliard pushed to branch master at wine / wine


Commits:
f323d75e by Rémi Bernon at 2025-12-09T12:52:54+01:00
win32u: Process every driver event in NtUserGetAsyncKeyState.

Splinter Cell sends WM_SETREDRAW 0 which changes the window style,
removing WS_VISIBLE, then SetWindowPos and WM_SETREDRAW 1 right after
that, then stops processing or waiting on window messages entirely while
playing its intro video. The only call it does is GetAsyncKeyState, to
check whether mouse buttons are pressed to skip its intro videos.

In winex11 we now request window state changes asynchronously and in
particular we request WM_STATE Withdrawn in this case when SetWindowPos
is called after removing WS_VISIBLE.

When WM_SETREDRAW 1 is called we also try updating the window state as
it should be made visible again, but this often happens too quickly and
the window manager hasn't yet updated the WM_STATE property, so we delay
the request until a later call to WindowPosChanged or until the reply is
received.

As the game doesn't process its window messages, ProcessEvents is then
never called with the right mask and the WM_STATE update is never seen.

Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=59069

- - - - -


1 changed file:

- dlls/win32u/input.c


View it on GitLab: https://gitlab.winehq.org/wine/wine/-/commit/f323d75e658fcb4f48c0b762001cee1da09d9398

-- 
View it on GitLab: https://gitlab.winehq.org/wine/wine/-/commit/f323d75e658fcb4f48c0b762001cee1da09d9398
You're receiving this email because of your account on gitlab.winehq.org.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.