From 06e4082dfb5d8d01587be069838eb1250bf4281d Mon Sep 17 00:00:00 2001 From: Miku AuahDark Date: Sun, 5 Dec 2021 13:12:01 +0800 Subject: [PATCH] Apply love-specific SDL2 patches. Hopefully this will be the last time. --- .../main/java/org/libsdl/app/SDLActivity.java | 41 +++++++++++++++---- .../src/jni/SDL2/include/SDL_config_android.h | 7 ++-- 2 files changed, 37 insertions(+), 11 deletions(-) diff --git a/love/src/jni/SDL2/android-project/app/src/main/java/org/libsdl/app/SDLActivity.java b/love/src/jni/SDL2/android-project/app/src/main/java/org/libsdl/app/SDLActivity.java index 02c64b1b..e21007bd 100644 --- a/love/src/jni/SDL2/android-project/app/src/main/java/org/libsdl/app/SDLActivity.java +++ b/love/src/jni/SDL2/android-project/app/src/main/java/org/libsdl/app/SDLActivity.java @@ -99,6 +99,8 @@ public class SDLActivity extends Activity implements View.OnSystemUiVisibilityCh public static NativeState mNextNativeState; public static NativeState mCurrentNativeState; + public static boolean mExitCalledFromJava; // love2d-mod: allow restarting of the native thread + /** If shared libraries (e.g. SDL or the native application) could not be loaded. */ public static boolean mBrokenLibraries = true; @@ -201,6 +203,7 @@ public class SDLActivity extends Activity implements View.OnSystemUiVisibilityCh mCursors = new Hashtable(); mLastCursorID = 0; mSDLThread = null; + mExitCalledFromJava = false; // love2d-mod: allow restarting of the native thread mIsResumedCalled = false; mHasFocus = true; mNextNativeState = NativeState.INIT; @@ -259,6 +262,11 @@ public class SDLActivity extends Activity implements View.OnSystemUiVisibilityCh return; } + startNative(); // love2d-mod: allow restarting of the native thread + } + + // love2d-mod-start: allow restarting of the native thread + public void startNative() { // Set up JNI SDL.setupJNI(); @@ -309,6 +317,7 @@ public class SDLActivity extends Activity implements View.OnSystemUiVisibilityCh } } } + // love2d-mod-end: allow restarting of the native thread protected void pauseNativeThread() { mNextNativeState = NativeState.PAUSED; @@ -474,6 +483,20 @@ public class SDLActivity extends Activity implements View.OnSystemUiVisibilityCh return; } + appQuitFinish(); // love2d-mod: allow restarting of the native thread + super.onDestroy(); + } + + // love2d-mod-start: allow restarting of the native thread + public void resetNative() { + Log.v("SDL", "resetNative()"); + + SDLActivity.mExitCalledFromJava = true; // love2d-mod: allow restarting of the native thread + + appQuitFinish(); + } + + private void appQuitFinish() { if (SDLActivity.mSDLThread != null) { // Send Quit event to "SDLThread" thread @@ -488,9 +511,8 @@ public class SDLActivity extends Activity implements View.OnSystemUiVisibilityCh } SDLActivity.nativeQuit(); - - super.onDestroy(); } + // love2d-mod-end: allow restarting of the native thread @Override public void onBackPressed() { @@ -1666,12 +1688,15 @@ class SDLMain implements Runnable { Log.v("SDL", "Finished main function"); - if (SDLActivity.mSingleton != null && !SDLActivity.mSingleton.isFinishing()) { - // Let's finish the Activity - SDLActivity.mSDLThread = null; - SDLActivity.mSingleton.finish(); - } // else: Activity is already being destroyed - + // love2d-mod-start: allow restarting of the native thread + if (!SDLActivity.mExitCalledFromJava) { + if (SDLActivity.mSingleton != null && !SDLActivity.mSingleton.isFinishing()) { + // Let's finish the Activity + SDLActivity.mSDLThread = null; + SDLActivity.mSingleton.finish(); + } // else: Activity is already being destroyed + } + // love2d-mod-end: allow restarting of the native thread } } diff --git a/love/src/jni/SDL2/include/SDL_config_android.h b/love/src/jni/SDL2/include/SDL_config_android.h index 9414ccc1..dd60947e 100644 --- a/love/src/jni/SDL2/include/SDL_config_android.h +++ b/love/src/jni/SDL2/include/SDL_config_android.h @@ -141,9 +141,10 @@ #endif /* Enable various audio drivers */ -#define SDL_AUDIO_DRIVER_ANDROID 1 -#define SDL_AUDIO_DRIVER_OPENSLES 1 -#define SDL_AUDIO_DRIVER_AAUDIO 1 +/* love2d-mod: Audio is handled by OpenAL */ +#define SDL_AUDIO_DRIVER_ANDROID 0 +#define SDL_AUDIO_DRIVER_OPENSLES 0 +#define SDL_AUDIO_DRIVER_AAUDIO 0 #define SDL_AUDIO_DRIVER_DUMMY 1 /* Enable various input drivers */