summaryrefslogtreecommitdiff
path: root/src/libcamera/request.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/libcamera/request.cpp')
-rw-r--r--src/libcamera/request.cpp13
1 files changed, 8 insertions, 5 deletions
diff --git a/src/libcamera/request.cpp b/src/libcamera/request.cpp
index 922682a3..d76db24d 100644
--- a/src/libcamera/request.cpp
+++ b/src/libcamera/request.cpp
@@ -104,7 +104,8 @@ int Request::prepare()
* data.
*
* The request completes when all the buffers it contains are ready to be
- * presented to the application.
+ * presented to the application. It then emits the Camera::requestCompleted
+ * signal and is automatically deleted.
*/
void Request::bufferCompleted(Buffer *buffer)
{
@@ -113,10 +114,12 @@ void Request::bufferCompleted(Buffer *buffer)
int ret = pending_.erase(buffer);
ASSERT(ret == 1);
- if (pending_.empty()) {
- std::map<Stream *, Buffer *> buffers(std::move(bufferMap_));
- camera_->requestCompleted.emit(this, buffers);
- }
+ if (!pending_.empty())
+ return;
+
+ std::map<Stream *, Buffer *> buffers(std::move(bufferMap_));
+ camera_->requestCompleted.emit(this, buffers);
+ delete this;
}
} /* namespace libcamera */