From dca281e810263f1fbf9420c2988932b7700be1d4 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Sat, 8 Jan 2022 08:49:34 -0800 Subject: [PATCH] Fixed getting different results for SDL_PollEvent(NULL) and SDL_PollEvent(&event) --- src/events/SDL_events.c | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/src/events/SDL_events.c b/src/events/SDL_events.c index ff079c50e..a69e5f538 100644 --- a/src/events/SDL_events.c +++ b/src/events/SDL_events.c @@ -1004,9 +1004,22 @@ SDL_WaitEventTimeout(SDL_Event * event, int timeout) } break; default: - if (event && event->type == SDL_POLLSENTINEL) { - /* Reached the end of a poll cycle, and not willing to wait */ - return 0; + if (include_sentinel) { + if (event) { + if (event->type == SDL_POLLSENTINEL) { + /* Reached the end of a poll cycle, and not willing to wait */ + return 0; + } + } else { + /* Need to peek the next event to check for sentinel */ + SDL_Event dummy; + + if (SDL_PeepEventsInternal(&dummy, 1, SDL_PEEKEVENT, SDL_FIRSTEVENT, SDL_LASTEVENT, SDL_TRUE) && + dummy.type == SDL_POLLSENTINEL) { + /* Reached the end of a poll cycle, and not willing to wait */ + return 0; + } + } } /* Has existing events */ return 1;