diff --git a/src/win32_window.c b/src/win32_window.c index efaab42db..c120b3a17 100644 --- a/src/win32_window.c +++ b/src/win32_window.c @@ -2182,12 +2182,17 @@ void _glfwWaitEventsWin32(void) void _glfwWaitEventsTimeoutWin32(double timeout) { DWORD ret; + double timeStart, timeEnd, timeWait; + timeStart = glfwGetTime(); + timeWait = timeout; do { - ret = MsgWaitForMultipleObjects(0, NULL, FALSE, (DWORD) (timeout * 1e3), QS_ALLINPUT); + ret = MsgWaitForMultipleObjects(0, NULL, FALSE, (DWORD) (timeWait * 1e3), QS_ALLINPUT); _glfwPollEventsWin32(); - } while (_glfw.newEventsRcvd == GLFW_FALSE && ret != WAIT_TIMEOUT); + timeEnd = glfwGetTime(); + timeWait = timeout - (timeEnd - timeStart); + } while (_glfw.newEventsRcvd == GLFW_FALSE && timeWait > 0.0 ); } void _glfwPostEmptyEventWin32(void) diff --git a/src/window.c b/src/window.c index fa827fc41..840fb206d 100644 --- a/src/window.c +++ b/src/window.c @@ -1210,7 +1210,6 @@ GLFWAPI void glfwWaitEventsTimeout(double timeout) } _glfw.newEventsRcvd = GLFW_FALSE; - _glfw.platform.waitEvents(); _glfw.platform.waitEventsTimeout(timeout); }