mirror of
https://github.com/reactos/reactos.git
synced 2024-11-16 20:07:14 +00:00
1711b13f21
[USER32] GetQueueStatus() should not return 0 when passing QS_ALLINPUT flag that includes QS_RAWINPUT (#4115) GTK applications call GetQueueStatus(QS_ALLINPUT), where QS_ALLINPUT specifies the QS_RAWINPUT flag as well, when these are compiled for Windows XP+, and they expect the call to succeed on this platform. On one side, ReactOS does not currently support this flag at all, but since it claims to be XP/2003-compatible, applications may implicitly expect the flag to be supported by GetQueueStatus() and the function *NOT* failing when this flag is set. (Later GTK apps don't care and just call GetQueueStatus(QS_ALLINPUT) that includes QS_RAWINPUT, and therefore would fail as well on e.g. Windows 2000...) Otherwise, an observable effect is that some versions of libgdk-win32-2.0.0.dll enter into an infinite loop when calling GetQueueStatus(QS_ALLINPUT), since this call always failed on ReactOS. On the other side, however, we should honour our winetests that handle the presence of the QS_RAWINPUT flag and behave differently accordingly. But since we do not support QS_RAWINPUT yet, we should keep their old behaviour where QS_RAWINPUT is unused. Thus, in order to accomodate both sides, we don't fail the GetQueueStatus() call, but just set the ERROR_INVALID_FLAGS last error and continue it. This fixes: 'All user32:TrackMouseEvent tests' CORE-15686: Gimp 2.8.22 from rapps hangs after startup with 90%-100% CPU usage and many dupes of that ticket like: CORE-17551: Ardour hangs at the first start (GTK2 issue) CORE-15151: newer "Inkscape 0.92.3" is unusable due to WIN32SS message queue lockup CORE-14086: RawTherapee 5.0-r1-gtk2 fails to start (using 100% CPU) CORE-11850: Geany 1.28 hangs with endless MsqSendMessage timed out CORE-8475: Wireshark hangs after launch It will also slightly appease, but not entirely fix: CORE-8217: 3D Text ScreenSaver freezes system Fix picked from 0.4.15-dev-3407-g |
||
---|---|---|
.. | ||
ntuser | ||
rtl | ||
user32 | ||
winsrv |