From 1787d6ca5c249c7ebabf885e63c96b1a5f3f61cc Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Sun, 29 Sep 2024 22:17:11 -0400 Subject: [PATCH] main: SDL_AppQuit() now reports the result value. Fixes #10994. --- docs/README-main-functions.md | 5 ++++- examples/audio/01-simple-playback/simple-playback.c | 2 +- .../simple-playback-callback.c | 2 +- examples/audio/03-load-wav/load-wav.c | 2 +- examples/camera/01-read-and-draw/read-and-draw.c | 2 +- examples/game/01-snake/snake.c | 2 +- examples/pen/01-drawing-lines/drawing-lines.c | 2 +- examples/renderer/01-clear/clear.c | 2 +- examples/renderer/02-primitives/primitives.c | 2 +- examples/renderer/03-lines/lines.c | 2 +- examples/renderer/04-points/points.c | 2 +- examples/renderer/05-rectangles/rectangles.c | 2 +- examples/renderer/06-textures/textures.c | 2 +- .../07-streaming-textures/streaming-textures.c | 2 +- .../renderer/08-rotating-textures/rotating-textures.c | 2 +- .../renderer/09-scaling-textures/scaling-textures.c | 2 +- examples/renderer/10-geometry/geometry.c | 2 +- examples/renderer/11-color-mods/color-mods.c | 2 +- examples/renderer/14-viewport/viewport.c | 2 +- examples/renderer/15-cliprect/cliprect.c | 2 +- examples/renderer/17-read-pixels/read-pixels.c | 2 +- examples/template.c | 2 +- include/SDL3/SDL_init.h | 2 +- include/SDL3/SDL_main.h | 3 ++- src/main/SDL_main_callbacks.c | 4 ++-- src/main/SDL_main_callbacks.h | 2 +- src/main/emscripten/SDL_sysmain_callbacks.c | 4 ++-- src/main/generic/SDL_sysmain_callbacks.c | 2 +- src/main/ios/SDL_sysmain_callbacks.m | 10 ++++++---- test/loopwave.c | 2 +- test/testaudio.c | 2 +- test/testaudiorecording.c | 2 +- test/testcamera.c | 2 +- test/testdropfile.c | 2 +- test/testgpu_simple_clear.c | 2 +- test/testpen.c | 2 +- test/testsprite.c | 2 +- 37 files changed, 48 insertions(+), 42 deletions(-) diff --git a/docs/README-main-functions.md b/docs/README-main-functions.md index f7e797ac4..e36654fc3 100644 --- a/docs/README-main-functions.md +++ b/docs/README-main-functions.md @@ -190,7 +190,7 @@ to SDL_EVENT_QUIT, etc. Finally: ```c -void SDL_AppQuit(void *appstate); +void SDL_AppQuit(void *appstate, SDL_AppResult result); ``` This is called once before terminating the app--assuming the app isn't being @@ -201,3 +201,6 @@ from main(), so atexit handles will run, if your platform supports that. If you set `*appstate` during SDL_AppInit, this is where you should free that data, as this pointer will not be provided to your app again. + +The SDL_AppResult value that terminated the app is provided here, in case +it's useful to know if this was a successful or failing run of the app. diff --git a/examples/audio/01-simple-playback/simple-playback.c b/examples/audio/01-simple-playback/simple-playback.c index 7c19e9e28..813e8317b 100644 --- a/examples/audio/01-simple-playback/simple-playback.c +++ b/examples/audio/01-simple-playback/simple-playback.c @@ -92,7 +92,7 @@ SDL_AppResult SDL_AppIterate(void *appstate) } /* This function runs once at shutdown. */ -void SDL_AppQuit(void *appstate) +void SDL_AppQuit(void *appstate, SDL_AppResult result) { /* SDL will clean up the window/renderer for us. */ } diff --git a/examples/audio/02-simple-playback-callback/simple-playback-callback.c b/examples/audio/02-simple-playback-callback/simple-playback-callback.c index 2e6078435..221e92a66 100644 --- a/examples/audio/02-simple-playback-callback/simple-playback-callback.c +++ b/examples/audio/02-simple-playback-callback/simple-playback-callback.c @@ -104,7 +104,7 @@ SDL_AppResult SDL_AppIterate(void *appstate) } /* This function runs once at shutdown. */ -void SDL_AppQuit(void *appstate) +void SDL_AppQuit(void *appstate, SDL_AppResult result) { /* SDL will clean up the window/renderer for us. */ } diff --git a/examples/audio/03-load-wav/load-wav.c b/examples/audio/03-load-wav/load-wav.c index 512dff7bd..79236525c 100644 --- a/examples/audio/03-load-wav/load-wav.c +++ b/examples/audio/03-load-wav/load-wav.c @@ -93,7 +93,7 @@ SDL_AppResult SDL_AppIterate(void *appstate) } /* This function runs once at shutdown. */ -void SDL_AppQuit(void *appstate) +void SDL_AppQuit(void *appstate, SDL_AppResult result) { SDL_free(wav_data); /* strictly speaking, this isn't necessary because the process is ending, but it's good policy. */ /* SDL will clean up the window/renderer for us. */ diff --git a/examples/camera/01-read-and-draw/read-and-draw.c b/examples/camera/01-read-and-draw/read-and-draw.c index 6b33443c3..9fbe616ce 100644 --- a/examples/camera/01-read-and-draw/read-and-draw.c +++ b/examples/camera/01-read-and-draw/read-and-draw.c @@ -103,7 +103,7 @@ SDL_AppResult SDL_AppIterate(void *appstate) } /* This function runs once at shutdown. */ -void SDL_AppQuit(void *appstate) +void SDL_AppQuit(void *appstate, SDL_AppResult result) { SDL_CloseCamera(camera); SDL_DestroyTexture(texture); diff --git a/examples/game/01-snake/snake.c b/examples/game/01-snake/snake.c index 3015b5df4..7a9e87cf4 100644 --- a/examples/game/01-snake/snake.c +++ b/examples/game/01-snake/snake.c @@ -320,7 +320,7 @@ SDL_AppResult SDL_AppEvent(void *appstate, SDL_Event *event) return SDL_APP_CONTINUE; } -void SDL_AppQuit(void *appstate) +void SDL_AppQuit(void *appstate, SDL_AppResult result) { if (appstate != NULL) { AppState *as = (AppState *)appstate; diff --git a/examples/pen/01-drawing-lines/drawing-lines.c b/examples/pen/01-drawing-lines/drawing-lines.c index c772e9a26..29bc2c43b 100644 --- a/examples/pen/01-drawing-lines/drawing-lines.c +++ b/examples/pen/01-drawing-lines/drawing-lines.c @@ -96,7 +96,7 @@ SDL_AppResult SDL_AppIterate(void *appstate) } /* This function runs once at shutdown. */ -void SDL_AppQuit(void *appstate) +void SDL_AppQuit(void *appstate, SDL_AppResult result) { SDL_DestroyTexture(render_target); /* SDL will clean up the window/renderer for us. */ diff --git a/examples/renderer/01-clear/clear.c b/examples/renderer/01-clear/clear.c index 8feee980b..6de14bae3 100644 --- a/examples/renderer/01-clear/clear.c +++ b/examples/renderer/01-clear/clear.c @@ -59,7 +59,7 @@ SDL_AppResult SDL_AppIterate(void *appstate) } /* This function runs once at shutdown. */ -void SDL_AppQuit(void *appstate) +void SDL_AppQuit(void *appstate, SDL_AppResult result) { /* SDL will clean up the window/renderer for us. */ } diff --git a/examples/renderer/02-primitives/primitives.c b/examples/renderer/02-primitives/primitives.c index daa4be28f..89bc7f57c 100644 --- a/examples/renderer/02-primitives/primitives.c +++ b/examples/renderer/02-primitives/primitives.c @@ -86,7 +86,7 @@ SDL_AppResult SDL_AppIterate(void *appstate) } /* This function runs once at shutdown. */ -void SDL_AppQuit(void *appstate) +void SDL_AppQuit(void *appstate, SDL_AppResult result) { /* SDL will clean up the window/renderer for us. */ } diff --git a/examples/renderer/03-lines/lines.c b/examples/renderer/03-lines/lines.c index 031077000..ed121f504 100644 --- a/examples/renderer/03-lines/lines.c +++ b/examples/renderer/03-lines/lines.c @@ -84,7 +84,7 @@ SDL_AppResult SDL_AppIterate(void *appstate) } /* This function runs once at shutdown. */ -void SDL_AppQuit(void *appstate) +void SDL_AppQuit(void *appstate, SDL_AppResult result) { /* SDL will clean up the window/renderer for us. */ } diff --git a/examples/renderer/04-points/points.c b/examples/renderer/04-points/points.c index c98fb9b32..d34a96655 100644 --- a/examples/renderer/04-points/points.c +++ b/examples/renderer/04-points/points.c @@ -109,7 +109,7 @@ SDL_AppResult SDL_AppIterate(void *appstate) } /* This function runs once at shutdown. */ -void SDL_AppQuit(void *appstate) +void SDL_AppQuit(void *appstate, SDL_AppResult result) { /* SDL will clean up the window/renderer for us. */ } diff --git a/examples/renderer/05-rectangles/rectangles.c b/examples/renderer/05-rectangles/rectangles.c index 2fd2ba807..95f4864a6 100644 --- a/examples/renderer/05-rectangles/rectangles.c +++ b/examples/renderer/05-rectangles/rectangles.c @@ -103,7 +103,7 @@ SDL_AppResult SDL_AppIterate(void *appstate) } /* This function runs once at shutdown. */ -void SDL_AppQuit(void *appstate) +void SDL_AppQuit(void *appstate, SDL_AppResult result) { /* SDL will clean up the window/renderer for us. */ } diff --git a/examples/renderer/06-textures/textures.c b/examples/renderer/06-textures/textures.c index a0bdb6c13..12fe70bcb 100644 --- a/examples/renderer/06-textures/textures.c +++ b/examples/renderer/06-textures/textures.c @@ -117,7 +117,7 @@ SDL_AppResult SDL_AppIterate(void *appstate) } /* This function runs once at shutdown. */ -void SDL_AppQuit(void *appstate) +void SDL_AppQuit(void *appstate, SDL_AppResult result) { SDL_DestroyTexture(texture); /* SDL will clean up the window/renderer for us. */ diff --git a/examples/renderer/07-streaming-textures/streaming-textures.c b/examples/renderer/07-streaming-textures/streaming-textures.c index 6b3a2d294..3bbae3557 100644 --- a/examples/renderer/07-streaming-textures/streaming-textures.c +++ b/examples/renderer/07-streaming-textures/streaming-textures.c @@ -99,7 +99,7 @@ SDL_AppResult SDL_AppIterate(void *appstate) } /* This function runs once at shutdown. */ -void SDL_AppQuit(void *appstate) +void SDL_AppQuit(void *appstate, SDL_AppResult result) { SDL_DestroyTexture(texture); /* SDL will clean up the window/renderer for us. */ diff --git a/examples/renderer/08-rotating-textures/rotating-textures.c b/examples/renderer/08-rotating-textures/rotating-textures.c index b71211241..850d0e505 100644 --- a/examples/renderer/08-rotating-textures/rotating-textures.c +++ b/examples/renderer/08-rotating-textures/rotating-textures.c @@ -103,7 +103,7 @@ SDL_AppResult SDL_AppIterate(void *appstate) } /* This function runs once at shutdown. */ -void SDL_AppQuit(void *appstate) +void SDL_AppQuit(void *appstate, SDL_AppResult result) { SDL_DestroyTexture(texture); /* SDL will clean up the window/renderer for us. */ diff --git a/examples/renderer/09-scaling-textures/scaling-textures.c b/examples/renderer/09-scaling-textures/scaling-textures.c index bcb9845f0..dc1cb3595 100644 --- a/examples/renderer/09-scaling-textures/scaling-textures.c +++ b/examples/renderer/09-scaling-textures/scaling-textures.c @@ -100,7 +100,7 @@ SDL_AppResult SDL_AppIterate(void *appstate) } /* This function runs once at shutdown. */ -void SDL_AppQuit(void *appstate) +void SDL_AppQuit(void *appstate, SDL_AppResult result) { SDL_DestroyTexture(texture); /* SDL will clean up the window/renderer for us. */ diff --git a/examples/renderer/10-geometry/geometry.c b/examples/renderer/10-geometry/geometry.c index b5621f872..2d85812af 100644 --- a/examples/renderer/10-geometry/geometry.c +++ b/examples/renderer/10-geometry/geometry.c @@ -156,7 +156,7 @@ SDL_AppResult SDL_AppIterate(void *appstate) } /* This function runs once at shutdown. */ -void SDL_AppQuit(void *appstate) +void SDL_AppQuit(void *appstate, SDL_AppResult result) { SDL_DestroyTexture(texture); /* SDL will clean up the window/renderer for us. */ diff --git a/examples/renderer/11-color-mods/color-mods.c b/examples/renderer/11-color-mods/color-mods.c index 21ae66a02..f6b9c2cbd 100644 --- a/examples/renderer/11-color-mods/color-mods.c +++ b/examples/renderer/11-color-mods/color-mods.c @@ -124,7 +124,7 @@ SDL_AppResult SDL_AppIterate(void *appstate) } /* This function runs once at shutdown. */ -void SDL_AppQuit(void *appstate) +void SDL_AppQuit(void *appstate, SDL_AppResult result) { SDL_DestroyTexture(texture); /* SDL will clean up the window/renderer for us. */ diff --git a/examples/renderer/14-viewport/viewport.c b/examples/renderer/14-viewport/viewport.c index 3001a61dc..096b799cd 100644 --- a/examples/renderer/14-viewport/viewport.c +++ b/examples/renderer/14-viewport/viewport.c @@ -126,7 +126,7 @@ SDL_AppResult SDL_AppIterate(void *appstate) } /* This function runs once at shutdown. */ -void SDL_AppQuit(void *appstate) +void SDL_AppQuit(void *appstate, SDL_AppResult result) { SDL_DestroyTexture(texture); /* SDL will clean up the window/renderer for us. */ diff --git a/examples/renderer/15-cliprect/cliprect.c b/examples/renderer/15-cliprect/cliprect.c index 0b4801f2f..4c69f47ec 100644 --- a/examples/renderer/15-cliprect/cliprect.c +++ b/examples/renderer/15-cliprect/cliprect.c @@ -127,7 +127,7 @@ SDL_AppResult SDL_AppIterate(void *appstate) } /* This function runs once at shutdown. */ -void SDL_AppQuit(void *appstate) +void SDL_AppQuit(void *appstate, SDL_AppResult result) { SDL_DestroyTexture(texture); /* SDL will clean up the window/renderer for us. */ diff --git a/examples/renderer/17-read-pixels/read-pixels.c b/examples/renderer/17-read-pixels/read-pixels.c index 35af871e6..b2cb52308 100644 --- a/examples/renderer/17-read-pixels/read-pixels.c +++ b/examples/renderer/17-read-pixels/read-pixels.c @@ -167,7 +167,7 @@ SDL_AppResult SDL_AppIterate(void *appstate) } /* This function runs once at shutdown. */ -void SDL_AppQuit(void *appstate) +void SDL_AppQuit(void *appstate, SDL_AppResult result) { SDL_DestroyTexture(converted_texture); SDL_DestroyTexture(texture); diff --git a/examples/template.c b/examples/template.c index a5cc99568..331db683e 100644 --- a/examples/template.c +++ b/examples/template.c @@ -44,7 +44,7 @@ SDL_AppResult SDL_AppIterate(void *appstate) } /* This function runs once at shutdown. */ -void SDL_AppQuit(void *appstate) +void SDL_AppQuit(void *appstate, SDL_AppResult result) { /* SDL will clean up the window/renderer for us. */ } diff --git a/include/SDL3/SDL_init.h b/include/SDL3/SDL_init.h index 10706c37e..902973433 100644 --- a/include/SDL3/SDL_init.h +++ b/include/SDL3/SDL_init.h @@ -96,7 +96,7 @@ typedef enum SDL_AppResult typedef SDL_AppResult (SDLCALL *SDL_AppInit_func)(void **appstate, int argc, char *argv[]); typedef SDL_AppResult (SDLCALL *SDL_AppIterate_func)(void *appstate); typedef SDL_AppResult (SDLCALL *SDL_AppEvent_func)(void *appstate, SDL_Event *event); -typedef void (SDLCALL *SDL_AppQuit_func)(void *appstate); +typedef void (SDLCALL *SDL_AppQuit_func)(void *appstate, SDL_AppResult result); /** * Initialize the SDL library. diff --git a/include/SDL3/SDL_main.h b/include/SDL3/SDL_main.h index b5cad4c7e..e173bd5c6 100644 --- a/include/SDL3/SDL_main.h +++ b/include/SDL3/SDL_main.h @@ -372,6 +372,7 @@ extern SDLMAIN_DECLSPEC SDL_AppResult SDLCALL SDL_AppEvent(void *appstate, SDL_E * resources to it should be cleaned up here. * * \param appstate an optional pointer, provided by the app in SDL_AppInit. + * \param result the result code that terminated the app (success or failure). * * \threadsafety This function is not thread safe. * @@ -379,7 +380,7 @@ extern SDLMAIN_DECLSPEC SDL_AppResult SDLCALL SDL_AppEvent(void *appstate, SDL_E * * \sa SDL_AppInit */ -extern SDLMAIN_DECLSPEC void SDLCALL SDL_AppQuit(void *appstate); +extern SDLMAIN_DECLSPEC void SDLCALL SDL_AppQuit(void *appstate, SDL_AppResult result); #endif /* SDL_MAIN_USE_CALLBACKS */ diff --git a/src/main/SDL_main_callbacks.c b/src/main/SDL_main_callbacks.c index ad967ea8f..60316c094 100644 --- a/src/main/SDL_main_callbacks.c +++ b/src/main/SDL_main_callbacks.c @@ -130,10 +130,10 @@ SDL_AppResult SDL_IterateMainCallbacks(bool pump_events) return rc; } -void SDL_QuitMainCallbacks(void) +void SDL_QuitMainCallbacks(SDL_AppResult result) { SDL_RemoveEventWatch(SDL_MainCallbackEventWatcher, NULL); - SDL_main_quit_callback(SDL_main_appstate); + SDL_main_quit_callback(SDL_main_appstate, result); SDL_main_appstate = NULL; // just in case. // for symmetry, you should explicitly Quit what you Init, but we might come through here uninitialized and SDL_Quit() will clear everything anyhow. diff --git a/src/main/SDL_main_callbacks.h b/src/main/SDL_main_callbacks.h index 0bac5a5c6..e8ba85ebd 100644 --- a/src/main/SDL_main_callbacks.h +++ b/src/main/SDL_main_callbacks.h @@ -25,7 +25,7 @@ bool SDL_HasMainCallbacks(void); SDL_AppResult SDL_InitMainCallbacks(int argc, char *argv[], SDL_AppInit_func appinit, SDL_AppIterate_func _appiter, SDL_AppEvent_func _appevent, SDL_AppQuit_func _appquit); SDL_AppResult SDL_IterateMainCallbacks(bool pump_events); -void SDL_QuitMainCallbacks(void); +void SDL_QuitMainCallbacks(SDL_AppResult result); #endif // SDL_main_callbacks_h_ diff --git a/src/main/emscripten/SDL_sysmain_callbacks.c b/src/main/emscripten/SDL_sysmain_callbacks.c index 9da67f38c..bee253eb5 100644 --- a/src/main/emscripten/SDL_sysmain_callbacks.c +++ b/src/main/emscripten/SDL_sysmain_callbacks.c @@ -28,7 +28,7 @@ static void EmscriptenInternalMainloop(void) { const SDL_AppResult rc = SDL_IterateMainCallbacks(true); if (rc != SDL_APP_CONTINUE) { - SDL_QuitMainCallbacks(); + SDL_QuitMainCallbacks(rc); emscripten_cancel_main_loop(); // kill" the mainloop, so it stops calling back into it. exit((rc == SDL_APP_FAILURE) ? 1 : 0); // hopefully this takes down everything else, too. } @@ -40,7 +40,7 @@ int SDL_EnterAppMainCallbacks(int argc, char* argv[], SDL_AppInit_func appinit, if (rc == SDL_APP_CONTINUE) { emscripten_set_main_loop(EmscriptenInternalMainloop, 0, 0); // run at refresh rate, don't throw an exception since we do an orderly return. } else { - SDL_QuitMainCallbacks(); + SDL_QuitMainCallbacks(rc); } return (rc == SDL_APP_FAILURE) ? 1 : 0; } diff --git a/src/main/generic/SDL_sysmain_callbacks.c b/src/main/generic/SDL_sysmain_callbacks.c index 05fc54b29..aa59d3245 100644 --- a/src/main/generic/SDL_sysmain_callbacks.c +++ b/src/main/generic/SDL_sysmain_callbacks.c @@ -75,7 +75,7 @@ int SDL_EnterAppMainCallbacks(int argc, char* argv[], SDL_AppInit_func appinit, SDL_RemoveHintCallback(SDL_HINT_MAIN_CALLBACK_RATE, MainCallbackRateHintChanged, NULL); } - SDL_QuitMainCallbacks(); + SDL_QuitMainCallbacks(rc); return (rc == SDL_APP_FAILURE) ? 1 : 0; } diff --git a/src/main/ios/SDL_sysmain_callbacks.m b/src/main/ios/SDL_sysmain_callbacks.m index ee37af36a..336f3a367 100644 --- a/src/main/ios/SDL_sysmain_callbacks.m +++ b/src/main/ios/SDL_sysmain_callbacks.m @@ -55,7 +55,7 @@ static SDLIosMainCallbacksDisplayLink *globalDisplayLink; [self.displayLink invalidate]; self.displayLink = nil; globalDisplayLink = nil; - SDL_QuitMainCallbacks(); + SDL_QuitMainCallbacks(rc); SDL_UpdateLifecycleObserver(); exit((rc == SDL_APP_FAILURE) ? 1 : 0); } @@ -66,16 +66,18 @@ static SDLIosMainCallbacksDisplayLink *globalDisplayLink; // When we return from here, we're living in the RunLoop, and a CADisplayLink is firing regularly for us. int SDL_EnterAppMainCallbacks(int argc, char* argv[], SDL_AppInit_func appinit, SDL_AppIterate_func appiter, SDL_AppEvent_func appevent, SDL_AppQuit_func appquit) { - const SDL_AppResult rc = SDL_InitMainCallbacks(argc, argv, appinit, appiter, appevent, appquit); + SDL_AppResult rc = SDL_InitMainCallbacks(argc, argv, appinit, appiter, appevent, appquit); if (rc == SDL_APP_CONTINUE) { globalDisplayLink = [[SDLIosMainCallbacksDisplayLink alloc] init:appiter quitfunc:appquit]; - if (globalDisplayLink != nil) { + if (globalDisplayLink == nil) { + rc = SDL_APP_FAILURE; + } else { return 0; // this will fall all the way out of SDL_main, where UIApplicationMain will keep running the RunLoop. } } // appinit requested quit, just bounce out now. - SDL_QuitMainCallbacks(); + SDL_QuitMainCallbacks(rc); exit((rc == SDL_APP_FAILURE) ? 1 : 0); return 1; // just in case. diff --git a/test/loopwave.c b/test/loopwave.c index be5038d7e..77ed73164 100644 --- a/test/loopwave.c +++ b/test/loopwave.c @@ -127,7 +127,7 @@ SDL_AppResult SDL_AppIterate(void *appstate) return fillerup(); } -void SDL_AppQuit(void *appstate) +void SDL_AppQuit(void *appstate, SDL_AppResult result) { SDL_DestroyAudioStream(stream); SDL_free(wave.sound); diff --git a/test/testaudio.c b/test/testaudio.c index e4ccf18ca..7eb6e75c1 100644 --- a/test/testaudio.c +++ b/test/testaudio.c @@ -1256,7 +1256,7 @@ SDL_AppResult SDL_AppIterate(void *appstate) return SDL_APP_CONTINUE; } -void SDL_AppQuit(void *appstate) +void SDL_AppQuit(void *appstate, SDL_AppResult result) { while (things) { DestroyThing(things); /* make sure all the audio devices are closed, etc. */ diff --git a/test/testaudiorecording.c b/test/testaudiorecording.c index 1189f0fb3..3c0f18b0b 100644 --- a/test/testaudiorecording.c +++ b/test/testaudiorecording.c @@ -196,7 +196,7 @@ SDL_AppResult SDL_AppIterate(void *appstate) return SDL_APP_CONTINUE; } -void SDL_AppQuit(void *appstate) +void SDL_AppQuit(void *appstate, SDL_AppResult result) { SDL_Log("Shutting down.\n"); const SDL_AudioDeviceID devid_in = SDL_GetAudioStreamDevice(stream_in); diff --git a/test/testcamera.c b/test/testcamera.c index 1cc21a4af..893af6711 100644 --- a/test/testcamera.c +++ b/test/testcamera.c @@ -353,7 +353,7 @@ SDL_AppResult SDL_AppIterate(void *appstate) return SDL_APP_CONTINUE; } -void SDL_AppQuit(void *appstate) +void SDL_AppQuit(void *appstate, SDL_AppResult result) { SDL_ReleaseCameraFrame(camera, frame_current); SDL_CloseCamera(camera); diff --git a/test/testdropfile.c b/test/testdropfile.c index 10395539c..c7d8dcd06 100644 --- a/test/testdropfile.c +++ b/test/testdropfile.c @@ -114,7 +114,7 @@ SDL_AppResult SDL_AppIterate(void *appstate) return SDL_APP_CONTINUE; } -void SDL_AppQuit(void *appstate) +void SDL_AppQuit(void *appstate, SDL_AppResult result) { dropfile_dialog *dialog = appstate; if (dialog) { diff --git a/test/testgpu_simple_clear.c b/test/testgpu_simple_clear.c index 099cd0b48..93d9d60c7 100644 --- a/test/testgpu_simple_clear.c +++ b/test/testgpu_simple_clear.c @@ -110,7 +110,7 @@ SDL_AppResult SDL_AppIterate(void *appstate) return SDL_APP_CONTINUE; } -void SDL_AppQuit(void *appstate) +void SDL_AppQuit(void *appstate, SDL_AppResult result) { /* Print out some timing information */ const Uint64 now = SDL_GetTicks(); diff --git a/test/testpen.c b/test/testpen.c index 68fa2123b..ef58c0fc4 100644 --- a/test/testpen.c +++ b/test/testpen.c @@ -273,7 +273,7 @@ SDL_AppResult SDL_AppIterate(void *appstate) return SDL_APP_CONTINUE; } -void SDL_AppQuit(void *appstate) +void SDL_AppQuit(void *appstate, SDL_AppResult result) { Pen *i, *next; for (i = pens.next; i != NULL; i = next) { diff --git a/test/testsprite.c b/test/testsprite.c index 9568efa97..1c9fdddb0 100644 --- a/test/testsprite.c +++ b/test/testsprite.c @@ -42,7 +42,7 @@ static bool suspend_when_occluded; /* -1: infinite random moves (default); >=0: enables N deterministic moves */ static int iterations = -1; -void SDL_AppQuit(void *appstate) +void SDL_AppQuit(void *appstate, SDL_AppResult result) { SDL_free(sprites); SDL_free(positions);