summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/libcamera/camera.cpp2
-rw-r--r--src/libcamera/pipeline_handler.cpp15
2 files changed, 17 insertions, 0 deletions
diff --git a/src/libcamera/camera.cpp b/src/libcamera/camera.cpp
index 763f3b99..1340c266 100644
--- a/src/libcamera/camera.cpp
+++ b/src/libcamera/camera.cpp
@@ -1084,6 +1084,8 @@ int Camera::stop()
d->pipe_->invokeMethod(&PipelineHandler::stop, ConnectionTypeBlocking,
this);
+ ASSERT(!d->pipe_->hasPendingRequests(this));
+
d->setState(Private::CameraConfigured);
return 0;
diff --git a/src/libcamera/pipeline_handler.cpp b/src/libcamera/pipeline_handler.cpp
index 3b3150bd..f41b7a7b 100644
--- a/src/libcamera/pipeline_handler.cpp
+++ b/src/libcamera/pipeline_handler.cpp
@@ -369,6 +369,21 @@ const ControlList &PipelineHandler::properties(const Camera *camera) const
*/
/**
+ * \brief Determine if the camera has any requests pending
+ * \param[in] camera The camera to check
+ *
+ * This method determines if there are any requests queued to the pipeline
+ * awaiting processing.
+ *
+ * \return True if there are pending requests, or false otherwise
+ */
+bool PipelineHandler::hasPendingRequests(const Camera *camera) const
+{
+ const CameraData *data = cameraData(camera);
+ return !data->queuedRequests_.empty();
+}
+
+/**
* \fn PipelineHandler::queueRequest()
* \brief Queue a request
* \param[in] request The request to queue