Only queue one wakeup event per wait Queuing more than one can lead to a spurious wakeup on the next wait.
diff --git a/src/events/SDL_events.c b/src/events/SDL_events.c
index 458d8a8..961d19b 100644
--- a/src/events/SDL_events.c
+++ b/src/events/SDL_events.c
@@ -596,6 +596,9 @@ SDL_SendWakeupEvent()
if (!_this->wakeup_lock || SDL_LockMutex(_this->wakeup_lock) == 0) {
if (_this->wakeup_window) {
_this->SendWakeupEvent(_this, _this->wakeup_window);
+
+ /* No more wakeup events needed until we enter a new wait */
+ _this->wakeup_window = NULL;
}
if (_this->wakeup_lock) {
SDL_UnlockMutex(_this->wakeup_lock);