should fix the crash on startup

This commit is contained in:
fysx
2014-02-11 00:26:03 +01:00
parent 1dd859c9d1
commit 5e3579f680
3 changed files with 21 additions and 20 deletions
+13 -9
View File
@@ -32,18 +32,22 @@ namespace android
double getScreenScale()
{
JNIEnv *env = (JNIEnv*) SDL_AndroidGetJNIEnv();
static double result = -1.;
jclass activity = (jclass) SDL_AndroidGetActivity();
jmethodID getMetrics = env->GetStaticMethodID(activity, "getMetrics", "()Landroid/util/DisplayMetrics;");
jobject metrics = env->CallStaticObjectMethod(activity, getMetrics);
jclass metricsClass = env->GetObjectClass(metrics);
if (result == -1.) {
JNIEnv *env = (JNIEnv*) SDL_AndroidGetJNIEnv();
jclass activity = env->FindClass("org/libsdl/app/SDLActivity");
double result = env->GetFloatField(metrics, env->GetFieldID(metricsClass, "density", "F"));
jmethodID getMetrics = env->GetStaticMethodID(activity, "getMetrics", "()Landroid/util/DisplayMetrics;");
jobject metrics = env->CallStaticObjectMethod(activity, getMetrics);
jclass metricsClass = env->GetObjectClass(metrics);
env->DeleteLocalRef (metricsClass);
env->DeleteLocalRef (metrics);
env->DeleteLocalRef (activity);
result = env->GetFloatField(metrics, env->GetFieldID(metricsClass, "density", "F"));
env->DeleteLocalRef (metricsClass);
env->DeleteLocalRef (metrics);
env->DeleteLocalRef (activity);
}
return result;
}