Browse Source

Apply love-specific SDL2 patches.

Hopefully this will be the last time.
Miku AuahDark 4 years ago
parent
commit
06e4082dfb

+ 33 - 8
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 mNextNativeState;
     public static NativeState mCurrentNativeState;
     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. */
     /** If shared libraries (e.g. SDL or the native application) could not be loaded. */
     public static boolean mBrokenLibraries = true;
     public static boolean mBrokenLibraries = true;
 
 
@@ -201,6 +203,7 @@ public class SDLActivity extends Activity implements View.OnSystemUiVisibilityCh
         mCursors = new Hashtable<Integer, PointerIcon>();
         mCursors = new Hashtable<Integer, PointerIcon>();
         mLastCursorID = 0;
         mLastCursorID = 0;
         mSDLThread = null;
         mSDLThread = null;
+        mExitCalledFromJava = false; // love2d-mod: allow restarting of the native thread
         mIsResumedCalled = false;
         mIsResumedCalled = false;
         mHasFocus = true;
         mHasFocus = true;
         mNextNativeState = NativeState.INIT;
         mNextNativeState = NativeState.INIT;
@@ -259,6 +262,11 @@ public class SDLActivity extends Activity implements View.OnSystemUiVisibilityCh
            return;
            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
         // Set up JNI
         SDL.setupJNI();
         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() {
     protected void pauseNativeThread() {
         mNextNativeState = NativeState.PAUSED;
         mNextNativeState = NativeState.PAUSED;
@@ -474,6 +483,20 @@ public class SDLActivity extends Activity implements View.OnSystemUiVisibilityCh
            return;
            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) {
         if (SDLActivity.mSDLThread != null) {
 
 
             // Send Quit event to "SDLThread" thread
             // Send Quit event to "SDLThread" thread
@@ -488,9 +511,8 @@ public class SDLActivity extends Activity implements View.OnSystemUiVisibilityCh
         }
         }
 
 
         SDLActivity.nativeQuit();
         SDLActivity.nativeQuit();
-
-        super.onDestroy();
     }
     }
+    // love2d-mod-end: allow restarting of the native thread
 
 
     @Override
     @Override
     public void onBackPressed() {
     public void onBackPressed() {
@@ -1666,12 +1688,15 @@ class SDLMain implements Runnable {
 
 
         Log.v("SDL", "Finished main function");
         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
     }
     }
 }
 }
 
 

+ 4 - 3
love/src/jni/SDL2/include/SDL_config_android.h

@@ -141,9 +141,10 @@
 #endif
 #endif
 
 
 /* Enable various audio drivers */
 /* 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
 #define SDL_AUDIO_DRIVER_DUMMY  1
 
 
 /* Enable various input drivers */
 /* Enable various input drivers */