|
@@ -1119,6 +1119,7 @@ WIN_PumpEvents(_THIS)
|
|
|
const Uint8 *keystate;
|
|
|
MSG msg;
|
|
|
DWORD start_ticks = GetTickCount();
|
|
|
+ int new_messages = 0;
|
|
|
|
|
|
if (g_WindowsEnableMessageLoop) {
|
|
|
while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) {
|
|
@@ -1132,7 +1133,15 @@ WIN_PumpEvents(_THIS)
|
|
|
|
|
|
/* Make sure we don't busy loop here forever if there are lots of events coming in */
|
|
|
if (SDL_TICKS_PASSED(msg.time, start_ticks)) {
|
|
|
- break;
|
|
|
+ /* We might get a few new messages generated by the Steam overlay or other application hooks
|
|
|
+ In this case those messages will be processed before any pending input, so we want to continue after those messages.
|
|
|
+ (thanks to Peter Deayton for his investigation here)
|
|
|
+ */
|
|
|
+ const int MAX_NEW_MESSAGES = 3;
|
|
|
+ ++new_messages;
|
|
|
+ if (new_messages > MAX_NEW_MESSAGES) {
|
|
|
+ break;
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|