summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/cam/camera_session.cpp14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/cam/camera_session.cpp b/src/cam/camera_session.cpp
index 60501827..1bf460fa 100644
--- a/src/cam/camera_session.cpp
+++ b/src/cam/camera_session.cpp
@@ -346,6 +346,16 @@ void CameraSession::requestComplete(Request *request)
void CameraSession::processRequest(Request *request)
{
+ /*
+ * If we've reached the capture limit, we're done. This doesn't
+ * duplicate the check below that emits the captureDone signal, as this
+ * function will be called for each request still in flight after the
+ * capture limit is reached and we don't want to emit the signal every
+ * single time.
+ */
+ if (captureLimit_ && captureCount_ >= captureLimit_)
+ return;
+
const Request::BufferMap &buffers = request->buffers();
/*
@@ -398,6 +408,10 @@ void CameraSession::processRequest(Request *request)
}
}
+ /*
+ * Notify the user that capture is complete if the limit has just been
+ * reached.
+ */
captureCount_++;
if (captureLimit_ && captureCount_ >= captureLimit_) {
captureDone.emit();