aboutsummaryrefslogtreecommitdiff
path: root/backends/platform/android/jni.cpp
diff options
context:
space:
mode:
authordhewg2011-02-20 20:46:17 +0100
committerdhewg2011-02-24 23:18:32 +0100
commitc4706733d45de09803b7cd40c3536a4e04b4f767 (patch)
tree0e62dd214b360ab0a8b85d032316d079a82b3600 /backends/platform/android/jni.cpp
parent4af28f96ab4075cb5e512d4050ac085df73a029a (diff)
downloadscummvm-rg350-c4706733d45de09803b7cd40c3536a4e04b4f767.tar.gz
scummvm-rg350-c4706733d45de09803b7cd40c3536a4e04b4f767.tar.bz2
scummvm-rg350-c4706733d45de09803b7cd40c3536a4e04b4f767.zip
ANDROID: Move the global back reference to jni.cpp
Diffstat (limited to 'backends/platform/android/jni.cpp')
-rw-r--r--backends/platform/android/jni.cpp14
1 files changed, 13 insertions, 1 deletions
diff --git a/backends/platform/android/jni.cpp b/backends/platform/android/jni.cpp
index e5d0f71f53..b81587b3ba 100644
--- a/backends/platform/android/jni.cpp
+++ b/backends/platform/android/jni.cpp
@@ -34,7 +34,10 @@
#undef JNIEXPORT
#define JNIEXPORT __attribute__ ((visibility("default")))
+jobject back_ptr;
+
static JavaVM *cached_jvm;
+
static jfieldID FID_Event_type;
static jfieldID FID_Event_synthetic;
static jfieldID FID_Event_kbd_keycode;
@@ -93,8 +96,13 @@ static void ScummVM_create(JNIEnv *env, jobject self, jobject am) {
g_sys = new OSystem_Android(am);
assert(g_sys);
+ // weak global ref to allow class to be unloaded
+ // ... except dalvik implements NewWeakGlobalRef only on froyo
+ //back_ptr = env->NewWeakGlobalRef(self);
+ back_ptr = env->NewGlobalRef(self);
+
// Exception already thrown by initJavaHooks?
- if (!g_sys->initJavaHooks(env, self))
+ if (!g_sys->initJavaHooks(env))
return;
env->SetLongField(self, FID_ScummVM_nativeScummVM, (jlong)g_sys);
@@ -109,6 +117,10 @@ static void ScummVM_nativeDestroy(JNIEnv *env, jobject self) {
g_system = 0;
g_sys = 0;
delete tmp;
+
+ // see above
+ //JNU_GetEnv()->DeleteWeakGlobalRef(back_ptr);
+ JNU_GetEnv()->DeleteGlobalRef(back_ptr);
}
static jint ScummVM_scummVMMain(JNIEnv *env, jobject self, jobjectArray args) {