@@ -790,12 +790,7 @@ void IPU3CameraData::cancelPendingRequests()
while (!pendingRequests_.empty()) {
Request *request = pendingRequests_.front();
- for (const auto &[stream, buffer] : request->buffers()) {
- buffer->_d()->cancel();
- pipe()->completeBuffer(request, buffer);
- }
-
- pipe()->completeRequest(request);
+ pipe()->cancelRequest(request);
pendingRequests_.pop();
}
}
@@ -1299,13 +1294,8 @@ void IPU3CameraData::cio2BufferReady(FrameBuffer *buffer)
/* If the buffer is cancelled force a complete of the whole request. */
if (buffer->metadata().status == FrameMetadata::FrameCancelled) {
- for (const auto &[stream, b] : request->buffers()) {
- b->_d()->cancel();
- pipe()->completeBuffer(request, b);
- }
-
frameInfos_.remove(info);
- pipe()->completeRequest(request);
+ pipe()->cancelRequest(request);
return;
}
@@ -1401,21 +1401,7 @@ void CameraData::clearIncompleteRequests()
* back to the application.
*/
while (!requestQueue_.empty()) {
- Request *request = requestQueue_.front();
-
- for (auto &b : request->buffers()) {
- FrameBuffer *buffer = b.second;
- /*
- * Has the buffer already been handed back to the
- * request? If not, do so now.
- */
- if (buffer->request()) {
- buffer->_d()->cancel();
- pipe()->completeBuffer(request, buffer);
- }
- }
-
- pipe()->completeRequest(request);
+ pipe()->cancelRequest(requestQueue_.front());
requestQueue_.pop();
}
}
@@ -605,12 +605,7 @@ void VimcCameraData::imageBufferReady(FrameBuffer *buffer)
/* If the buffer is cancelled force a complete of the whole request. */
if (buffer->metadata().status == FrameMetadata::FrameCancelled) {
- for (const auto &[stream, b] : request->buffers()) {
- b->_d()->cancel();
- pipe->completeBuffer(request, b);
- }
-
- pipe->completeRequest(request);
+ pipe->cancelRequest(request);
return;
}
Use `PipelineHander::cancelRequest()` instead of manually cancelling, completing each buffer, then completing the request. This has the same behaviour unless the request has no pending buffers. Signed-off-by: Barnabás Pőcze <barnabas.pocze@ideasonboard.com> --- src/libcamera/pipeline/ipu3/ipu3.cpp | 14 ++------------ .../pipeline/rpi/common/pipeline_base.cpp | 16 +--------------- src/libcamera/pipeline/vimc/vimc.cpp | 7 +------ 3 files changed, 4 insertions(+), 33 deletions(-)