diff options
Diffstat (limited to 'src/libcamera/request.cpp')
-rw-r--r-- | src/libcamera/request.cpp | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/src/libcamera/request.cpp b/src/libcamera/request.cpp index 45e7133f..19131472 100644 --- a/src/libcamera/request.cpp +++ b/src/libcamera/request.cpp @@ -56,7 +56,7 @@ LOG_DEFINE_CATEGORY(Request) */ Request::Request(Camera *camera, uint64_t cookie) : camera_(camera), controls_(camera), cookie_(cookie), - status_(RequestPending) + status_(RequestPending), cancelled_(false) { } @@ -199,14 +199,15 @@ int Request::prepare() /** * \brief Complete a queued request - * \param[in] status The request completion status * - * Mark the request as complete by updating its status to \a status. + * Mark the request as complete by updating its status to RequestComplete, + * unless buffers have been cancelled in which case the status is set to + * RequestCancelled. */ -void Request::complete(Status status) +void Request::complete() { ASSERT(!hasPendingBuffers()); - status_ = status; + status_ = cancelled_ ? RequestCancelled : RequestComplete; } /** @@ -229,6 +230,9 @@ bool Request::completeBuffer(Buffer *buffer) buffer->setRequest(nullptr); + if (buffer->status() == Buffer::BufferCancelled) + cancelled_ = true; + return !hasPendingBuffers(); } |