Browse Source

Make sure that we quit if we get a terminating event

This covers the case where the application didn't handle the quit or terminating event, we still need the main loop to finish.
Sam Lantinga 6 months ago
parent
commit
a432abf4cc
1 changed files with 5 additions and 0 deletions
  1. 5 0
      src/main/SDL_main_callbacks.c

+ 5 - 0
src/main/SDL_main_callbacks.c

@@ -75,6 +75,11 @@ static bool SDLCALL SDL_MainCallbackEventWatcher(void *userdata, SDL_Event *even
         // Make sure any currently queued events are processed then dispatch this before continuing
         SDL_DispatchMainCallbackEvents();
         SDL_DispatchMainCallbackEvent(event);
+
+        // Make sure that we quit if we get a terminating event
+        if (event->type == SDL_EVENT_TERMINATING) {
+            SDL_CompareAndSwapAtomicInt(&apprc, SDL_APP_CONTINUE, SDL_APP_SUCCESS);
+        }
     } else {
         // We'll process this event later from the main event queue
     }