diff --git a/src/video/windows/SDL_windowsevents.c b/src/video/windows/SDL_windowsevents.c index d54b5ea413..2ac4e78aef 100644 --- a/src/video/windows/SDL_windowsevents.c +++ b/src/video/windows/SDL_windowsevents.c @@ -1686,31 +1686,8 @@ void SDL_SetWindowsMessageHook(SDL_WindowsMessageHook callback, void *userdata) int WIN_WaitEventTimeout(SDL_VideoDevice *_this, Sint64 timeoutNS) { - MSG msg; if (g_WindowsEnableMessageLoop) { - BOOL message_result; - UINT_PTR timer_id = 0; - if (timeoutNS > 0) { - timer_id = SetTimer(NULL, 0, (UINT)SDL_NS_TO_MS(timeoutNS), NULL); - message_result = GetMessage(&msg, 0, 0, 0); - KillTimer(NULL, timer_id); - } else if (timeoutNS == 0) { - message_result = PeekMessage(&msg, NULL, 0, 0, PM_REMOVE); - } else { - message_result = GetMessage(&msg, 0, 0, 0); - } - if (message_result) { - if (msg.message == WM_TIMER && !msg.hwnd && msg.wParam == timer_id) { - return 0; - } - if (g_WindowsMessageHook) { - if (!g_WindowsMessageHook(g_WindowsMessageHookData, &msg)) { - return 1; - } - } - /* Always translate the message in case it's a non-SDL window (e.g. with Qt integration) */ - TranslateMessage(&msg); - DispatchMessage(&msg); + if (MsgWaitForMultipleObjects(0, NULL, FALSE, (DWORD)SDL_NS_TO_MS(timeoutNS), QS_ALLINPUT)) { return 1; } else { return 0;