SDL: We only need to add the sentinel at the top of SDL_WaitEventTimeout()

From c477768e6f926c38d4cdc236cab8376faf9f6789 Mon Sep 17 00:00:00 2001
From: Sam Lantinga <[EMAIL REDACTED]>
Date: Thu, 6 Jan 2022 18:58:30 -0800
Subject: [PATCH] We only need to add the sentinel at the top of
 SDL_WaitEventTimeout()

---
 src/events/SDL_events.c | 30 ++++++++++++------------------
 1 file changed, 12 insertions(+), 18 deletions(-)

diff --git a/src/events/SDL_events.c b/src/events/SDL_events.c
index ff079c50ea9..7bd982a7a84 100644
--- a/src/events/SDL_events.c
+++ b/src/events/SDL_events.c
@@ -809,7 +809,7 @@ SDL_FlushEvents(Uint32 minType, Uint32 maxType)
 
 /* Run the system dependent event loops */
 void
-SDL_PumpEventsInternal(SDL_bool push_sentinel)
+SDL_PumpEvents()
 {
     SDL_VideoDevice *_this = SDL_GetVideoDevice();
 
@@ -836,20 +836,6 @@ SDL_PumpEventsInternal(SDL_bool push_sentinel)
 #endif
 
     SDL_SendPendingSignalEvents();  /* in case we had a signal handler fire, etc. */
-
-    if (push_sentinel && SDL_GetEventState(SDL_POLLSENTINEL) == SDL_ENABLE) {
-        SDL_Event sentinel;
-
-        SDL_zero(sentinel);
-        sentinel.type = SDL_POLLSENTINEL;
-        SDL_PushEvent(&sentinel);
-    }
-}
-
-void
-SDL_PumpEvents()
-{
-    SDL_PumpEventsInternal(SDL_FALSE);
 }
 
 /* Public functions */
@@ -891,7 +877,7 @@ SDL_WaitEventTimeout_Device(_THIS, SDL_Window *wakeup_window, SDL_Event * event,
            c) Periodic processing that takes place in some platform PumpEvents() functions happens
            d) Signals received in WaitEventTimeout() are turned into SDL events
         */
-        SDL_PumpEventsInternal(SDL_TRUE);
+        SDL_PumpEvents();
 
         if (!_this->wakeup_lock || SDL_LockMutex(_this->wakeup_lock) == 0) {
             int status = SDL_PeepEvents(event, 1, SDL_GETEVENT, SDL_FIRSTEVENT, SDL_LASTEVENT);
@@ -990,7 +976,15 @@ SDL_WaitEventTimeout(SDL_Event * event, int timeout)
 
     /* If there isn't a poll sentinel event pending, pump events and add one */
     if (SDL_AtomicGet(&SDL_sentinel_pending) == 0) {
-        SDL_PumpEventsInternal(SDL_TRUE);
+        SDL_PumpEvents();
+
+        if (SDL_GetEventState(SDL_POLLSENTINEL) == SDL_ENABLE) {
+            SDL_Event sentinel;
+
+            SDL_zero(sentinel);
+            sentinel.type = SDL_POLLSENTINEL;
+            SDL_PushEvent(&sentinel);
+        }
     }
 
     /* First check for existing events */
@@ -1037,7 +1031,7 @@ SDL_WaitEventTimeout(SDL_Event * event, int timeout)
     }
 
     for (;;) {
-        SDL_PumpEventsInternal(SDL_TRUE);
+        SDL_PumpEvents();
         switch (SDL_PeepEvents(event, 1, SDL_GETEVENT, SDL_FIRSTEVENT, SDL_LASTEVENT)) {
         case -1:
             return 0;