diff options
-rw-r--r-- | sys/androidmedia/gstjniutils.c | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/sys/androidmedia/gstjniutils.c b/sys/androidmedia/gstjniutils.c index 4fe374719..a5b8e0d72 100644 --- a/sys/androidmedia/gstjniutils.c +++ b/sys/androidmedia/gstjniutils.c @@ -497,6 +497,29 @@ gst_amc_jni_detach_current_thread (void *env) } } +static JavaVM * +get_application_java_vm (void) +{ + GModule *module = NULL; + JavaVM *(*get_java_vm) (void); + JavaVM *vm = NULL; + + module = g_module_open (NULL, G_MODULE_BIND_LOCAL); + + if (!module) { + return NULL; + } + + if (g_module_symbol (module, "gst_android_get_java_vm", + (gpointer *) & get_java_vm) && get_java_vm) { + vm = get_java_vm (); + } + + g_module_close (module); + + return vm; +} + static gboolean check_nativehelper (void) { @@ -663,6 +686,12 @@ gst_amc_jni_initialize_java_vm (void) return initialize_classes (); } + java_vm = get_application_java_vm (); + if (java_vm) { + GST_DEBUG ("Java VM successfully requested from the application"); + return initialize_classes (); + } + /* Returns TRUE if we can safely * a) get the current VMs and * b) start a VM if none is started yet |