lib/android: the dalvik module is higher in the importation hierarchy
authorAlexis Laferrière <alexis.laf@xymus.net>
Mon, 16 Mar 2015 19:07:03 +0000 (15:07 -0400)
committerAlexis Laferrière <alexis.laf@xymus.net>
Tue, 17 Mar 2015 21:12:50 +0000 (17:12 -0400)
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>

lib/android/dalvik.nit
lib/android/native_app_glue.nit

index ffb5c83..48603dc 100644 (file)
 # Java related services specific to Android and its Dalvik VM
 module dalvik
 
-import native_app_glue
+import activities
+
+redef class App
+       # The main Java Activity of this application
+       fun native_activity: NativeActivity is abstract
+end
 
 extern class JavaClassLoader in "Java" `{java.lang.ClassLoader`}
        super JavaObject
 end
 
 redef class Sys
-       # Get the running JVM
-       redef fun create_default_jvm
-       do
-               var jvm = app.native_app_glue.ndk_native_activity.vm
-               var jni_env = jvm.attach_current_thread
-               if jni_env.address_is_null then jni_env = jvm.env
+       # We cannot create a JVM on Android
+       #
+       # This method is not reachable on this platform anyway.
+       # `Sys::jvm` is implemented by the main activity modules.
+       redef fun create_default_jvm do abort
 
-               self.jvm = jvm
-               self.jni_env = jni_env
-       end
+       redef fun jni_env do return jvm.attach_current_thread
 
        private var class_loader: nullable JavaObject = null
        private var class_loader_method: nullable JMethodID = null
@@ -41,7 +43,7 @@ redef class Sys
        do
                var class_loader = self.class_loader
                if class_loader == null then
-                       find_class_loader(app.native_app_glue.ndk_native_activity.java_native_activity)
+                       find_class_loader app.native_activity
                        class_loader = self.class_loader
                        assert class_loader != null
                end
index 31e5430..e713467 100644 (file)
@@ -40,7 +40,7 @@ module native_app_glue is ldflags "-landroid"
 
 import platform
 import log
-import activities
+import dalvik
 
 in "C header" `{
        #include <android_native_app_glue.h>
@@ -123,6 +123,10 @@ extern class NativeNativeActivity in "Java" `{ android.app.NativeActivity `}
        super NativeActivity
 end
 
+redef class Sys
+       redef fun jvm do return app.native_app_glue.ndk_native_activity.vm
+end
+
 redef class App
        redef fun setup
        do
@@ -135,8 +139,7 @@ redef class App
        # The underlying implementation using the Android native_app_glue framework
        fun native_app_glue: NativeAppGlue `{ return native_app_glue_data; `}
 
-       # The main Java Activity of this application
-       fun native_activity: NativeActivity do return native_app_glue.ndk_native_activity.java_native_activity
+       redef fun native_activity do return native_app_glue.ndk_native_activity.java_native_activity
 
        # Set `native_app_glue` command handler to our C implementation which
        # will callback self.