Fix Android app freeze after calling CloseWindow() (#3067)

Fixed that the Android application was not closed properly after calling `CloseWindow()` and continued to run.
This commit is contained in:
Le Juez Victor 2023-05-16 09:00:44 +00:00 committed by GitHub
parent e17cf9ecd7
commit 675efbda3b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -718,6 +718,23 @@ void android_main(struct android_app *app)
// NOTE: Return codes != 0 are skipped
(void)main(1, (char *[]) { arg0, NULL });
// Finish native activity
ANativeActivity_finish(CORE.Android.app->activity);
// Android ALooper_pollAll() variables
int pollResult = 0;
int pollEvents = 0;
// Wait for app events to close
while (!CORE.Android.app->destroyRequested) {
while ((pollResult = ALooper_pollAll(0, NULL, &pollEvents, (void**)&CORE.Android.source)) >= 0) {
if (CORE.Android.source != NULL) CORE.Android.source->process(CORE.Android.app, CORE.Android.source);
}
}
// WARNING: Check for deallocation and ensure no other processes are running from the application.
exit(0); // Closes the application completely without going through Java
}
// NOTE: Add this to header (if apps really need it)
@ -5731,8 +5748,9 @@ static void AndroidCommandCallback(struct android_app *app, int32_t cmd)
case APP_CMD_STOP: break;
case APP_CMD_DESTROY:
{
// TODO: Finish activity?
//ANativeActivity_finish(CORE.Android.app->activity);
// NOTE 1: Call ANativeActivity_finish again to free resources unconditionally.
// NOTE 2: You can deallocate other things that are NativeActivity related here.
ANativeActivity_finish(CORE.Android.app->activity);
} break;
case APP_CMD_CONFIG_CHANGED:
{