amc: actually use the provided application class loader
authorMatthew Waters <matthew@centricular.com>
Thu, 31 Aug 2017 08:56:37 +0000 (18:56 +1000)
committerMatthew Waters <matthew@centricular.com>
Tue, 5 Sep 2017 11:16:33 +0000 (21:16 +1000)
For the camera and sensor

Fixes a couple of ClassNotFound java exceptions when initializing GStreamer
off the main thread.

sys/androidmedia/gst-android-hardware-camera.c
sys/androidmedia/gst-android-hardware-sensor.c
sys/androidmedia/gstjniutils.c

index aa574bd..639e024 100644 (file)
@@ -1590,8 +1590,8 @@ _init_classes (void)
 
   if (!org_freedesktop_gstreamer_androidmedia_gstahccallback.klass) {
     org_freedesktop_gstreamer_androidmedia_gstahccallback.klass =
-        gst_amc_jni_get_class (env, &err,
-        "org/freedesktop/gstreamer/androidmedia/GstAhcCallback");
+        gst_amc_jni_get_application_class (env,
+        "org/freedesktop/gstreamer/androidmedia/GstAhcCallback", &err);
   }
   if (!org_freedesktop_gstreamer_androidmedia_gstahccallback.klass)
     goto failed;
index d4fd71c..d5a68b5 100644 (file)
@@ -569,8 +569,8 @@ _init_classes (void)
   /* org.freedesktop.gstreamer.androidmedia.GstAhsCallback */
   if (!org_freedesktop_gstreamer_androidmedia_gstahscallback.klass) {
     org_freedesktop_gstreamer_androidmedia_gstahscallback.klass =
-        gst_amc_jni_get_class (env, &err,
-        "org/freedesktop/gstreamer/androidmedia/GstAhsCallback");
+        gst_amc_jni_get_application_class (env,
+        "org/freedesktop/gstreamer/androidmedia/GstAhsCallback", &err);
   }
   if (!org_freedesktop_gstreamer_androidmedia_gstahscallback.klass)
     goto failed;
index a5b8e0d..0f2efc2 100644 (file)
@@ -869,6 +869,13 @@ gst_amc_jni_get_application_class (JNIEnv * env, const gchar * name,
   jclass class_loader_cls = NULL;
   jmethodID load_class_id = 0;
 
+  GST_LOG ("attempting to retrieve class %s", name);
+
+  if (!get_class_loader) {
+    g_set_error (err, GST_LIBRARY_ERROR, GST_LIBRARY_ERROR_FAILED,
+        "Could not retreive application class loader function");
+    goto done;
+  }
 
   class_loader = get_class_loader ();
   if (!class_loader) {
@@ -887,7 +894,7 @@ gst_amc_jni_get_application_class (JNIEnv * env, const gchar * name,
   load_class_id =
       gst_amc_jni_get_method_id (env, err, class_loader_cls, "loadClass",
       "(Ljava/lang/String;)Ljava/lang/Class;");
-  if (!class_loader_cls) {
+  if (!load_class_id) {
     goto done;
   }