diff options
-rw-r--r-- | src/cam/camera_session.cpp | 14 |
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(); |