Fix broken use of MsgWaitForMultipleObjects.

- Timeout < 0 was not handled properly
- Return value for success is WAIT_OBJECT_0 + nCount, not positive value

(cherry picked from commit 69f2bd151e)
This commit is contained in:
Hans-Kristian Arntzen
2024-02-10 14:01:34 +01:00
committed by Sam Lantinga
parent 646cccede7
commit 4ae87e215e

View File

@@ -1803,7 +1803,10 @@ void SDL_SetWindowsMessageHook(SDL_WindowsMessageHook callback, void *userdata)
int WIN_WaitEventTimeout(_THIS, int timeout) int WIN_WaitEventTimeout(_THIS, int timeout)
{ {
if (g_WindowsEnableMessageLoop) { if (g_WindowsEnableMessageLoop) {
if (MsgWaitForMultipleObjects(0, NULL, FALSE, (DWORD)timeout, QS_ALLINPUT)) { DWORD dwMilliseconds, ret;
dwMilliseconds = timeout < 0 ? INFINITE : (DWORD)timeout;
ret = MsgWaitForMultipleObjects(0, NULL, FALSE, dwMilliseconds, QS_ALLINPUT);
if (ret == WAIT_OBJECT_0) {
return 1; return 1;
} else { } else {
return 0; return 0;