summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakub Adam <jakub.adam@collabora.com>2020-02-27 14:38:07 -0500
committerLaurent Pinchart <laurent.pinchart@ideasonboard.com>2020-03-07 01:58:08 +0200
commit9dab15bed639cc59b51ef8aa81f372ab21136739 (patch)
treeb0f9dd8fe211fb8a04b144af7dd98c515a9c7d6e
parenta9ce14b0e081eeae6f8474f1719b8103f5fb1fde (diff)
gst: utils: Factor-out the task resume helper
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> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
-rw-r--r--src/gstreamer/gstlibcamera-utils.cpp11
-rw-r--r--src/gstreamer/gstlibcamera-utils.h1
-rw-r--r--src/gstreamer/gstlibcamerasrc.cpp10
3 files changed, 13 insertions, 9 deletions
diff --git a/src/gstreamer/gstlibcamera-utils.cpp b/src/gstreamer/gstlibcamera-utils.cpp
index 482439a8..44a993fa 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 cbfb1cc0..2b3f26b6 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 4b4b0098..690892bd 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