lib/android: hacks to fix new_global_ref awaiting a fix for #845
authorAlexis Laferrière <alexis.laf@xymus.net>
Fri, 10 Oct 2014 17:44:07 +0000 (13:44 -0400)
committerJean Privat <jean@pryen.org>
Fri, 31 Oct 2014 16:55:17 +0000 (12:55 -0400)
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>

lib/android/assets_and_resources.nit
lib/android/bundle/bundle.nit
lib/android/intent/intent_api10.nit
lib/android/shared_preferences/shared_preferences_api10.nit
lib/android/vibration.nit

index ba304bd..9470dd8 100644 (file)
@@ -186,6 +186,13 @@ extern class NativeResources in "Java" `{ android.content.res.Resources `}
        fun get_resource_name(resid: Int): JavaString in "Java" `{ return recv.getResourceName((int)resid); `}
        fun get_resource_pakage_name(resid: Int): JavaString in "Java" `{ return recv.getResourcePackageName((int)resid); `}
        fun get_resource_type_name(resid: Int): JavaString in "Java" `{ return recv.getResourceTypeName((int)resid); `}
+
+       # HACK for bug #845
+       redef fun new_global_ref import sys, Sys.jni_env `{
+               Sys sys = NativeResources_sys(recv);
+               JNIEnv *env = Sys_jni_env(sys);
+               return (*env)->NewGlobalRef(env, recv);
+       `}
 end
 
 # Resource manager for android resources placed in the `res` folder of your app
index 1d1ec0c..9528e05 100644 (file)
@@ -411,6 +411,13 @@ extern class NativeBundle in "Java" `{ android.os.Bundle `}
        `}
        fun describe_contents: Int in "Java" `{ return recv.describeContents(); `}
        fun to_string: JavaString in "Java" `{ return recv.toString(); `}
+
+       # HACK for bug #845
+       redef fun new_global_ref import sys, Sys.jni_env `{
+               Sys sys = NativeBundle_sys(recv);
+               JNIEnv *env = Sys_jni_env(sys);
+               return (*env)->NewGlobalRef(env, recv);
+       `}
 end
 
 # A class mapping `String` keys to various value types
index 00b5766..d07a817 100644 (file)
@@ -413,6 +413,13 @@ extern class NativeIntent in "Java" `{ android.content.Intent `}
        `}
        fun to_native_s: JavaString in "Java" `{ return recv.toString(); `}
        fun to_uri(flags: Int): JavaString in "Java" `{ return recv.toUri((int)flags); `}
+
+       # HACK for bug #845
+       redef fun new_global_ref import sys, Sys.jni_env `{
+               Sys sys = NativeIntent_sys(recv);
+               JNIEnv *env = Sys_jni_env(sys);
+               return (*env)->NewGlobalRef(env, recv);
+       `}
 end
 
 extern class NativePackageManager in "Java" `{ android.content.pm.PackageManager `}
index 81ababc..8635f86 100644 (file)
@@ -102,6 +102,13 @@ extern class NativeSharedPreferences in "Java" `{ android.content.SharedPreferen
 
                return return_value;
        `}
+
+       # HACK for bug #845
+       redef fun new_global_ref import sys, Sys.jni_env `{
+               Sys sys = NativeSharedPreferences_sys(recv);
+               JNIEnv *env = Sys_jni_env(sys);
+               return (*env)->NewGlobalRef(env, recv);
+       `}
 end
 
 extern class NativeSharedPreferencesEditor in "Java" `{ android.content.SharedPreferences$Editor `}
@@ -128,6 +135,13 @@ extern class NativeSharedPreferencesEditor in "Java" `{ android.content.SharedPr
        fun remove(key: JavaString): NativeSharedPreferencesEditor in "Java" `{ 
                return recv.remove(key); 
        `}
+
+       # HACK for bug #845
+       redef fun new_global_ref import sys, Sys.jni_env `{
+               Sys sys = NativeSharedPreferencesEditor_sys(recv);
+               JNIEnv *env = Sys_jni_env(sys);
+               return (*env)->NewGlobalRef(env, recv);
+       `}
 end
 
 # Provides services to save and load data for the android platform
index abff40f..6226285 100644 (file)
@@ -38,6 +38,13 @@ extern class Vibrator in "Java" `{ android.os.Vibrator `}
 
        # Turn off the vibration
        fun cancel in "Java" `{ recv.cancel(); `}
+
+       # HACK for bug #845
+       redef fun new_global_ref import sys, Sys.jni_env `{
+               Sys sys = Vibrator_sys(recv);
+               JNIEnv *env = Sys_jni_env(sys);
+               return (*env)->NewGlobalRef(env, recv);
+       `}
 end
 
 redef class App