From c4fc20a03369fc137fd001f733b6f663b2679f1f Mon Sep 17 00:00:00 2001 From: Hans-Kristian Arntzen Date: Sat, 10 Feb 2024 14:01:34 +0100 Subject: [PATCH] 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 69f2bd151ece3c00d1850d90da137053b1936b16) (cherry picked from commit 4ae87e215ee068257dd7581f9837a71f4799abe8) --- src/video/windows/SDL_windowsevents.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/video/windows/SDL_windowsevents.c b/src/video/windows/SDL_windowsevents.c index ca1b9bbcda..8e05c414d4 100644 --- a/src/video/windows/SDL_windowsevents.c +++ b/src/video/windows/SDL_windowsevents.c @@ -1803,7 +1803,10 @@ void SDL_SetWindowsMessageHook(SDL_WindowsMessageHook callback, void *userdata) int WIN_WaitEventTimeout(_THIS, int timeout) { 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; } else { return 0;