|
@@ -751,6 +751,8 @@ JNIEXPORT void JNICALL SDL_JAVA_CONTROLLER_INTERFACE(nativeSetupJNI)(JNIEnv *env
|
|
typedef int (*SDL_main_func)(int argc, char *argv[]);
|
|
typedef int (*SDL_main_func)(int argc, char *argv[]);
|
|
|
|
|
|
static int run_count = 0;
|
|
static int run_count = 0;
|
|
|
|
+static bool allow_recreate_activity;
|
|
|
|
+static bool allow_recreate_activity_set;
|
|
|
|
|
|
JNIEXPORT int JNICALL SDL_JAVA_INTERFACE(nativeCheckSDLThreadCounter)(
|
|
JNIEXPORT int JNICALL SDL_JAVA_INTERFACE(nativeCheckSDLThreadCounter)(
|
|
JNIEnv *env, jclass jcls)
|
|
JNIEnv *env, jclass jcls)
|
|
@@ -760,10 +762,16 @@ JNIEXPORT int JNICALL SDL_JAVA_INTERFACE(nativeCheckSDLThreadCounter)(
|
|
return tmp;
|
|
return tmp;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+void Android_SetAllowRecreateActivity(bool enabled)
|
|
|
|
+{
|
|
|
|
+ allow_recreate_activity = enabled;
|
|
|
|
+ allow_recreate_activity_set = true;
|
|
|
|
+}
|
|
|
|
+
|
|
JNIEXPORT jboolean JNICALL SDL_JAVA_INTERFACE(nativeAllowRecreateActivity)(
|
|
JNIEXPORT jboolean JNICALL SDL_JAVA_INTERFACE(nativeAllowRecreateActivity)(
|
|
JNIEnv *env, jclass jcls)
|
|
JNIEnv *env, jclass jcls)
|
|
{
|
|
{
|
|
- return SDL_GetHintBoolean(SDL_HINT_ANDROID_ALLOW_RECREATE_ACTIVITY, false);
|
|
|
|
|
|
+ return allow_recreate_activity;
|
|
}
|
|
}
|
|
|
|
|
|
JNIEXPORT void JNICALL SDL_JAVA_INTERFACE(nativeInitMainThread)(
|
|
JNIEXPORT void JNICALL SDL_JAVA_INTERFACE(nativeInitMainThread)(
|
|
@@ -1526,6 +1534,14 @@ JNIEXPORT void JNICALL SDL_JAVA_INTERFACE(nativeSetenv)(
|
|
// Note that we call setenv() directly to avoid affecting SDL environments
|
|
// Note that we call setenv() directly to avoid affecting SDL environments
|
|
setenv(utfname, utfvalue, 1); // This should NOT be SDL_setenv()
|
|
setenv(utfname, utfvalue, 1); // This should NOT be SDL_setenv()
|
|
|
|
|
|
|
|
+ if (SDL_strcmp(utfname, SDL_HINT_ANDROID_ALLOW_RECREATE_ACTIVITY) == 0) {
|
|
|
|
+ // Special handling for this hint, which needs to persist outside the normal application flow
|
|
|
|
+ // Only set this the first time we run, in case it's been set by the application via SDL_SetHint()
|
|
|
|
+ if (!allow_recreate_activity_set) {
|
|
|
|
+ Android_SetAllowRecreateActivity(SDL_GetStringBoolean(utfvalue, false));
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
(*env)->ReleaseStringUTFChars(env, name, utfname);
|
|
(*env)->ReleaseStringUTFChars(env, name, utfname);
|
|
(*env)->ReleaseStringUTFChars(env, value, utfvalue);
|
|
(*env)->ReleaseStringUTFChars(env, value, utfvalue);
|
|
}
|
|
}
|