androidmedia: Actively request the Java VM from the application

This is more consistent with how we already request the application
class loader and other application resources elsewhere.
This commit is contained in:
Sebastian Dröge 2017-01-03 18:53:39 +02:00
parent e31714691a
commit eca6c35601

View file

@ -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