Selaa lähdekoodia

Fixed bug 3932 - Android, GetDisplayDPI release local reference

Sylvain

When writing JNI code, one has to make sure all local references are released otherwise the app end up crashing.
Sam Lantinga 7 vuotta sitten
vanhempi
commit
9192c93e90
1 muutettua tiedostoa jossa 13 lisäystä ja 3 poistoa
  1. 13 3
      src/core/android/SDL_android.c

+ 13 - 3
src/core/android/SDL_android.c

@@ -1065,9 +1065,19 @@ int Android_JNI_GetDisplayDPI(float *ddpi, float *xdpi, float *ydpi)
     float nativeYdpi = (*env)->GetFloatField(env, jDisplayObj, fidYdpi);
     int nativeDdpi = (*env)->GetIntField(env, jDisplayObj, fidDdpi);
 
-    *ddpi = (float)nativeDdpi;
-    *xdpi = nativeXdpi;
-    *ydpi = nativeYdpi;
+
+    (*env)->DeleteLocalRef(env, jDisplayObj);
+    (*env)->DeleteLocalRef(env, jDisplayClass);
+
+    if (ddpi) {
+        *ddpi = (float)nativeDdpi;
+    }
+    if (xdpi) {
+        *xdpi = nativeXdpi;
+    }
+    if (ydpi) {
+        *ydpi = nativeYdpi;
+    }
 
     return 0;
 }