summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/libcamera/pipeline_handler.cpp27
1 files changed, 27 insertions, 0 deletions
diff --git a/src/libcamera/pipeline_handler.cpp b/src/libcamera/pipeline_handler.cpp
index 67fdf1d8..2374c289 100644
--- a/src/libcamera/pipeline_handler.cpp
+++ b/src/libcamera/pipeline_handler.cpp
@@ -312,6 +312,17 @@ void PipelineHandler::queueRequest(Request *request)
{
LIBCAMERA_TRACEPOINT(request_queue, request);
+ waitingRequests_.push(request);
+ doQueueRequests();
+}
+
+/**
+ * \brief Queue one requests to the device
+ */
+void PipelineHandler::doQueueRequest(Request *request)
+{
+ LIBCAMERA_TRACEPOINT(request_device_queue, request);
+
Camera *camera = request->_d()->camera();
Camera::Private *data = camera->_d();
data->queuedRequests_.push_back(request);
@@ -326,6 +337,22 @@ void PipelineHandler::queueRequest(Request *request)
}
/**
+ * \brief Queue requests to the device
+ *
+ * Iterate the list of waiting requests and queue them to the device one
+ * by one.
+ */
+void PipelineHandler::doQueueRequests()
+{
+ while (!waitingRequests_.empty()) {
+ Request *request = waitingRequests_.front();
+ waitingRequests_.pop();
+
+ doQueueRequest(request);
+ }
+}
+
+/**
* \fn PipelineHandler::queueRequestDevice()
* \brief Queue a request to the device
* \param[in] camera The camera to queue the request to