[libcamera-devel,v3,25/27] gst: utils: Factor-out the task resume helper

Message ID 20200306202637.525587-26-nicolas@ndufresne.ca
State Accepted
Headers show
Series
  • GStreamer Element for libcamera
Related show

Commit Message

Nicolas Dufresne March 6, 2020, 8:26 p.m. UTC
From: Jakub Adam <jakub.adam@collabora.com>

Task resume will be added in the core GStreamer API in the future and
we will need to call this in another location in the following patches.

Signed-off-by: Jakub Adam <jakub.adam@collabora.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
---
 src/gstreamer/gstlibcamera-utils.cpp | 11 +++++++++++
 src/gstreamer/gstlibcamera-utils.h   |  1 +
 src/gstreamer/gstlibcamerasrc.cpp    | 10 +---------
 3 files changed, 13 insertions(+), 9 deletions(-)

Patch

diff --git a/src/gstreamer/gstlibcamera-utils.cpp b/src/gstreamer/gstlibcamera-utils.cpp
index 482439a..44a993f 100644
--- a/src/gstreamer/gstlibcamera-utils.cpp
+++ b/src/gstreamer/gstlibcamera-utils.cpp
@@ -167,3 +167,14 @@  gst_libcamera_configure_stream_from_caps(StreamConfiguration &stream_cfg,
 	stream_cfg.size.width = width;
 	stream_cfg.size.height = height;
 }
+
+void
+gst_libcamera_resume_task(GstTask *task)
+{
+	/* We only want to resume the task if it's paused. */
+	GLibLocker lock(GST_OBJECT(task));
+	if (GST_TASK_STATE(task) == GST_TASK_PAUSED) {
+		GST_TASK_STATE(task) = GST_TASK_STARTED;
+		GST_TASK_SIGNAL(task);
+	}
+}
diff --git a/src/gstreamer/gstlibcamera-utils.h b/src/gstreamer/gstlibcamera-utils.h
index cbfb1cc..2b3f26b 100644
--- a/src/gstreamer/gstlibcamera-utils.h
+++ b/src/gstreamer/gstlibcamera-utils.h
@@ -18,6 +18,7 @@  GstCaps *gst_libcamera_stream_formats_to_caps(const libcamera::StreamFormats &fo
 GstCaps *gst_libcamera_stream_configuration_to_caps(const libcamera::StreamConfiguration &stream_cfg);
 void gst_libcamera_configure_stream_from_caps(libcamera::StreamConfiguration &stream_cfg,
 					      GstCaps *caps);
+void gst_libcamera_resume_task(GstTask *task);
 
 /**
  * \class GLibLocker
diff --git a/src/gstreamer/gstlibcamerasrc.cpp b/src/gstreamer/gstlibcamerasrc.cpp
index 8d0d0e1..22d9175 100644
--- a/src/gstreamer/gstlibcamerasrc.cpp
+++ b/src/gstreamer/gstlibcamerasrc.cpp
@@ -196,15 +196,7 @@  GstLibcameraSrcState::requestCompleted(Request *request)
 		gst_libcamera_pad_queue_buffer(srcpad, buffer);
 	}
 
-	{
-		/* We only want to resume the task if it's paused. */
-		GstTask *task = src_->task;
-		GLibLocker lock(GST_OBJECT(task));
-		if (GST_TASK_STATE(task) == GST_TASK_PAUSED) {
-			GST_TASK_STATE(task) = GST_TASK_STARTED;
-			GST_TASK_SIGNAL(task);
-		}
-	}
+	gst_libcamera_resume_task(this->src_->task);
 }
 
 static bool