Fixed bug 3917 - Android, issues with getManifestEnvironmentVariable

Sylvain

What about getting some return code instead of creating another native function.
Sam Lantinga 2017-11-04 22:03:28 -07:00
parent 2c5724ef5d
commit 50e422adfe
2 changed files with 11 additions and 13 deletions

View File

@ -513,7 +513,6 @@ public class SDLActivity extends Activity {
public static native void onNativeSurfaceDestroyed();
public static native String nativeGetHint(String name);
public static native void nativeSetenv(String name, String value);
public static native void nativeEnvironmentVariablesSet();
/**
* This method is called by SDL using JNI.
@ -618,12 +617,12 @@ public class SDLActivity extends Activity {
/**
* This method is called by SDL using JNI.
*/
public static void getManifestEnvironmentVariables() {
public static boolean getManifestEnvironmentVariables() {
try {
ApplicationInfo applicationInfo = getContext().getPackageManager().getApplicationInfo(getContext().getPackageName(), PackageManager.GET_META_DATA);
Bundle bundle = applicationInfo.metaData;
if (bundle == null) {
return;
return false;
}
String prefix = "SDL_ENV.";
final int trimLength = prefix.length();
@ -634,10 +633,12 @@ public class SDLActivity extends Activity {
nativeSetenv(name, value);
}
}
nativeEnvironmentVariablesSet();
/* environment variables set! */
return true;
} catch (Exception e) {
Log.v("SDL", "exception " + e.toString());
}
return false;
}
static class ShowTextInputTask implements Runnable {

View File

@ -251,7 +251,7 @@ static jfieldID fidSeparateMouseAndTouch;
static float fLastAccelerometer[3];
static SDL_bool bHasNewData;
static SDL_bool bHasEnvironmentVariables;
static SDL_bool bHasEnvironmentVariables = SDL_FALSE;
/*******************************************************************************
Functions called by JNI
@ -324,7 +324,7 @@ JNIEXPORT void JNICALL SDL_JAVA_INTERFACE(nativeSetupJNI)(JNIEnv* mEnv, jclass c
"openAPKExpansionInputStream", "(Ljava/lang/String;)Ljava/io/InputStream;");
midGetManifestEnvironmentVariables = (*mEnv)->GetStaticMethodID(mEnv, mActivityClass,
"getManifestEnvironmentVariables", "()V");
"getManifestEnvironmentVariables", "()Z");
midGetDisplayDPI = (*mEnv)->GetStaticMethodID(mEnv, mActivityClass, "getDisplayDPI", "()Landroid/util/DisplayMetrics;");
@ -831,12 +831,6 @@ JNIEXPORT void JNICALL SDL_JAVA_INTERFACE(nativeSetenv)(
}
JNIEXPORT void JNICALL SDL_JAVA_INTERFACE(nativeEnvironmentVariablesSet)(
JNIEnv* env, jclass cls)
{
bHasEnvironmentVariables = SDL_TRUE;
}
/*******************************************************************************
Functions called by SDL into Java
*******************************************************************************/
@ -2143,7 +2137,10 @@ void Android_JNI_GetManifestEnvironmentVariables(void)
if (!bHasEnvironmentVariables) {
JNIEnv *env = Android_JNI_GetEnv();
(*env)->CallStaticVoidMethod(env, mActivityClass, midGetManifestEnvironmentVariables);
SDL_bool ret = (*env)->CallStaticBooleanMethod(env, mActivityClass, midGetManifestEnvironmentVariables);
if (ret) {
bHasEnvironmentVariables = SDL_TRUE;
}
}
}