diff --git a/sys/androidcamera/gst-android-hardware-camera.c b/sys/androidcamera/gst-android-hardware-camera.c index 3e1f697ca0..36204ea3c5 100644 --- a/sys/androidcamera/gst-android-hardware-camera.c +++ b/sys/androidcamera/gst-android-hardware-camera.c @@ -126,7 +126,8 @@ gst_ah_camera_on_preview_frame (JNIEnv * env, jclass klass, jbyteArray data, { GstAHCPreviewCallback cb = (GstAHCPreviewCallback) (gsize) callback; - cb (data, (gpointer) (gsize) user_data); + if (cb) + cb (data, (gpointer) (gsize) user_data); } static void @@ -135,7 +136,8 @@ gst_ah_camera_on_error (JNIEnv * env, jclass klass, jint error, { GstAHCErrorCallback cb = (GstAHCErrorCallback) (gsize) callback; - cb (error, (gpointer) (gsize) user_data); + if (cb) + cb (error, (gpointer) (gsize) user_data); } static JNINativeMethod native_methods[] = { diff --git a/sys/androidcamera/gstahcsrc.c b/sys/androidcamera/gstahcsrc.c index fe44ff4c51..7580bd58d1 100644 --- a/sys/androidcamera/gstahcsrc.c +++ b/sys/androidcamera/gstahcsrc.c @@ -139,8 +139,6 @@ gst_ahc_src_dispose (GObject * object) { GstAHCSrc *self = GST_AHC_SRC (object); - gst_ahc_src_close (self); - if (self->queue) g_object_unref (self->queue); self->queue = NULL; @@ -673,6 +671,8 @@ gst_ahc_src_stop (GstBaseSrc * bsrc) if (self->camera) { gst_data_queue_flush (self->queue); self->start = FALSE; + gst_ah_camera_set_preview_callback_with_buffer (self->camera, NULL, NULL); + gst_ah_camera_set_error_callback (self->camera, NULL, NULL); return gst_ah_camera_stop_preview (self->camera); } return TRUE;