Android: make sure the activity gets really finished
diff --git a/android-project/app/src/main/java/org/libsdl/app/SDLActivity.java b/android-project/app/src/main/java/org/libsdl/app/SDLActivity.java
index de03ba7..ff38a33 100644
--- a/android-project/app/src/main/java/org/libsdl/app/SDLActivity.java
+++ b/android-project/app/src/main/java/org/libsdl/app/SDLActivity.java
@@ -221,6 +221,7 @@
// This is what SDL runs in. It invokes SDL_main(), eventually
protected static Thread mSDLThread;
+ protected static int mIsFinishing = 0;
protected static SDLGenericMotionListener_API12 getMotionListener() {
if (mMotionListener == null) {
@@ -324,6 +325,16 @@
Log.v(TAG, "onCreate()");
super.onCreate(savedInstanceState);
+
+ /* Really finish the activity, even if user try to re-start it quickly */
+ if (mIsFinishing != 0 && mIsFinishing < 5) {
+ Log.v(TAG, "finish activity");
+ mIsFinishing += 1;
+ /* Make it clear the activity has to be destroyed, even if finish() seems not to be required here */
+ finish();
+ return;
+ }
+
try {
Thread.currentThread().setName("SDLActivity");
} catch (Exception e) {
@@ -1902,6 +1913,7 @@
if (SDLActivity.mSingleton != null && !SDLActivity.mSingleton.isFinishing()) {
// Let's finish the Activity
SDLActivity.mSDLThread = null;
+ SDLActivity.mIsFinishing = 1;
SDLActivity.mSingleton.finish();
} // else: Activity is already being destroyed