summary refs log blame commit diff
path: root/pkgs/os-specific/linux/tiscamera/allow-pipeline-stop-in-trigger-mode.patch
blob: 48a520f6ec3a11daa5aac0646fa2c340702fe3ee (plain) (tree)















































                                                                                  
diff --git a/src/gstreamer-1.0/gsttcamsrc.cpp b/src/gstreamer-1.0/gsttcamsrc.cpp
index d482e1e..e36afd8 100644
--- a/src/gstreamer-1.0/gsttcamsrc.cpp
+++ b/src/gstreamer-1.0/gsttcamsrc.cpp
@@ -1112,6 +1112,7 @@ bool gst_tcam_src_init_camera (GstTcamSrc* self)
 
 static void gst_tcam_src_close_camera (GstTcamSrc* self)
 {
+    GST_INFO("Closing device");
     if (self->device != NULL)
     {
         self->device->dev->stop_stream();
@@ -1156,7 +1157,7 @@ static gboolean gst_tcam_src_stop (GstBaseSrc* src)
 
     self->device->dev->stop_stream();
     gst_element_send_event(GST_ELEMENT(self), gst_event_new_eos());
-    GST_DEBUG_OBJECT (self, "Stopped acquisition");
+    GST_DEBUG("Stopped acquisition");
 
     return TRUE;
 }
@@ -1556,6 +1557,18 @@ static void gst_tcam_src_get_property (GObject* object,
 }
 
 
+static gboolean gst_tcam_src_unlock (GstBaseSrc* src)
+{
+    GstTcamSrc* self = GST_TCAM_SRC(src);
+
+    self->is_running = FALSE;
+
+    self->cv.notify_all();
+
+    return TRUE;
+}
+
+
 static void gst_tcam_src_class_init (GstTcamSrcClass* klass)
 {
     GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
@@ -1616,6 +1629,7 @@ static void gst_tcam_src_class_init (GstTcamSrcClass* klass)
     gstbasesrc_class->fixate = gst_tcam_src_fixate_caps;
     gstbasesrc_class->start = gst_tcam_src_start;
     gstbasesrc_class->stop = gst_tcam_src_stop;
+    gstbasesrc_class->unlock = gst_tcam_src_unlock;
     gstbasesrc_class->negotiate = gst_tcam_src_negotiate;
     gstbasesrc_class->get_times = gst_tcam_src_get_times;