From 66fbfe1d00282783c6cbdf0d2f6630f84a6eec24 Mon Sep 17 00:00:00 2001 From: Sylvain Becker Date: Thu, 10 Jan 2019 15:43:07 +0100 Subject: [PATCH] Android: nativeQuit for SDLActivity thread - destroy Android_ActivityMutex - display any SDL error message that may have occured in this thread, since SDL_GetError() is thread specific, and user has no access to it. --- .../main/java/org/libsdl/app/SDLActivity.java | 3 +++ src/core/android/SDL_android.c | 22 +++++++++++++++++++ 2 files changed, 25 insertions(+) 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 38c2cd8f4afff..5fe46e098465b 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 @@ -405,6 +405,8 @@ protected void onDestroy() { } } + SDLActivity.nativeQuit(); + super.onDestroy(); } @@ -727,6 +729,7 @@ boolean sendCommand(int command, Object data) { public static native int nativeRunMain(String library, String function, Object arguments); public static native void nativeLowMemory(); public static native void nativeSendQuit(); + public static native void nativeQuit(); public static native void nativePause(); public static native void nativeResume(); public static native void onNativeDropFile(String filename); diff --git a/src/core/android/SDL_android.c b/src/core/android/SDL_android.c index 981165376321c..0a51f037b49d8 100644 --- a/src/core/android/SDL_android.c +++ b/src/core/android/SDL_android.c @@ -125,6 +125,9 @@ JNIEXPORT void JNICALL SDL_JAVA_INTERFACE(nativeLowMemory)( JNIEXPORT void JNICALL SDL_JAVA_INTERFACE(nativeSendQuit)( JNIEnv *env, jclass cls); +JNIEXPORT void JNICALL SDL_JAVA_INTERFACE(nativeQuit)( + JNIEnv *env, jclass cls); + JNIEXPORT void JNICALL SDL_JAVA_INTERFACE(nativePause)( JNIEnv *env, jclass cls); @@ -833,6 +836,25 @@ JNIEXPORT void JNICALL SDL_JAVA_INTERFACE(nativeSendQuit)( SDL_SemPost(Android_ResumeSem); } +/* Activity ends */ +JNIEXPORT void JNICALL SDL_JAVA_INTERFACE(nativeQuit)( + JNIEnv *env, jclass cls) +{ + const char *str; + + if (Android_ActivityMutex) { + SDL_DestroyMutex(Android_ActivityMutex); + Android_ActivityMutex = NULL; + } + + str = SDL_GetError(); + if (str && str[0]) { + __android_log_print(ANDROID_LOG_VERBOSE, "SDL", "SDLActivity thread ends (error=%s)", str); + } else { + __android_log_print(ANDROID_LOG_VERBOSE, "SDL", "SDLActivity thread ends"); + } +} + /* Pause */ JNIEXPORT void JNICALL SDL_JAVA_INTERFACE(nativePause)( JNIEnv *env, jclass cls)