summaryrefslogtreecommitdiff
path: root/sys/androidmedia/gstjniutils.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/androidmedia/gstjniutils.c')
-rw-r--r--sys/androidmedia/gstjniutils.c29
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