Skip to content

Commit

Permalink
Fix Android app freeze after calling CloseWindow() (#3067)
Browse files Browse the repository at this point in the history
Fixed that the Android application was not closed properly after calling `CloseWindow()` and continued to run.
  • Loading branch information
Bigfoot71 committed May 16, 2023
1 parent e17cf9e commit 675efbd
Showing 1 changed file with 20 additions and 2 deletions.
22 changes: 20 additions & 2 deletions src/rcore.c
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down Expand Up @@ -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:
{
Expand Down

0 comments on commit 675efbd

Please sign in to comment.