SDL: Fix broken use of MsgWaitForMultipleObjects. (4ae87)

From 4ae87e215ee068257dd7581f9837a71f4799abe8 Mon Sep 17 00:00:00 2001
From: Hans-Kristian Arntzen <[EMAIL REDACTED]>
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)
---
 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 ca1b9bbcdab4..8e05c414d4d6 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;