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() double getScreenScale()
{ {
JNIEnv *env = (JNIEnv*) SDL_AndroidGetJNIEnv(); static double result = -1.;
jclass activity = (jclass) SDL_AndroidGetActivity(); if (result == -1.) {
jmethodID getMetrics = env->GetStaticMethodID(activity, "getMetrics", "()Landroid/util/DisplayMetrics;"); JNIEnv *env = (JNIEnv*) SDL_AndroidGetJNIEnv();
jobject metrics = env->CallStaticObjectMethod(activity, getMetrics); jclass activity = env->FindClass("org/libsdl/app/SDLActivity");
jclass metricsClass = env->GetObjectClass(metrics);
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); result = env->GetFloatField(metrics, env->GetFieldID(metricsClass, "density", "F"));
env->DeleteLocalRef (metrics);
env->DeleteLocalRef (activity); env->DeleteLocalRef (metricsClass);
env->DeleteLocalRef (metrics);
env->DeleteLocalRef (activity);
}
return result; return result;
} }
+8
View File
@@ -12,6 +12,7 @@ import android.view.inputmethod.InputConnection;
import android.view.inputmethod.InputMethodManager; import android.view.inputmethod.InputMethodManager;
import android.widget.AbsoluteLayout; import android.widget.AbsoluteLayout;
import android.os.*; import android.os.*;
import android.util.DisplayMetrics;
import android.util.Log; import android.util.Log;
import android.graphics.*; import android.graphics.*;
import android.media.*; import android.media.*;
@@ -53,6 +54,11 @@ public class SDLActivity extends Activity {
System.loadLibrary("love"); System.loadLibrary("love");
} }
private static DisplayMetrics metrics = new DisplayMetrics();
public static DisplayMetrics getMetrics() {
return metrics;
}
// Setup // Setup
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
@@ -79,6 +85,8 @@ public class SDLActivity extends Activity {
mLayout.addView(mSurface); mLayout.addView(mSurface);
setContentView(mLayout); setContentView(mLayout);
getWindowManager().getDefaultDisplay().getMetrics(metrics);
} }
// Events // Events
-11
View File
@@ -1,22 +1,11 @@
package org.love2d.android; package org.love2d.android;
import org.libsdl.app.SDLActivity; import org.libsdl.app.SDLActivity;
import android.util.DisplayMetrics;
import android.os.Bundle; import android.os.Bundle;
public class GameActivity extends SDLActivity { public class GameActivity extends SDLActivity {
private static DisplayMetrics metrics = new DisplayMetrics();
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
getWindowManager().getDefaultDisplay().getMetrics(metrics);
} }
public static DisplayMetrics getMetrics() {
return metrics;
}
} }