[libcamera-devel] [PATCH 2/5] apps: lc-compliance: Check that requests complete successfully

Jacopo Mondi jacopo.mondi at ideasonboard.com
Fri Dec 22 17:40:33 CET 2023


From: Nícolas F. R. A. Prado <nfraprado at collabora.com>

When a request fails to queue it is completed but with its status set to
RequestCancelled. Add a check in the requestComplete callback to make
sure that the request was completed successfully.

For the SimpleCaptureUnbalanced test we need to do this check only if
the capture isn't over yet, otherwise the few extra requests that get
cancelled at the end, which is the normal behavior, will make the test
fail.

Signed-off-by: Nícolas F. R. A. Prado <nfraprado at collabora.com>
Reviewed-by: Paul Elder <paul.elder at ideasonboard.com>
Signed-off-by: Paul Elder <paul.elder at ideasonboard.com>
---
 src/apps/lc-compliance/simple_capture.cpp | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/src/apps/lc-compliance/simple_capture.cpp b/src/apps/lc-compliance/simple_capture.cpp
index cf4d7cf38bc3..e22a339c4e1c 100644
--- a/src/apps/lc-compliance/simple_capture.cpp
+++ b/src/apps/lc-compliance/simple_capture.cpp
@@ -127,6 +127,9 @@ int SimpleCaptureBalanced::queueRequest(Request *request)
 
 void SimpleCaptureBalanced::requestComplete(Request *request)
 {
+	EXPECT_EQ(request->status(), Request::Status::RequestComplete)
+		<< "Request didn't complete successfully";
+
 	captureCount_++;
 	if (captureCount_ >= captureLimit_) {
 		loop_->exit(0);
@@ -184,6 +187,9 @@ void SimpleCaptureUnbalanced::requestComplete(Request *request)
 		return;
 	}
 
+	EXPECT_EQ(request->status(), Request::Status::RequestComplete)
+		<< "Request didn't complete successfully";
+
 	request->reuse(Request::ReuseBuffers);
 	if (camera_->queueRequest(request))
 		loop_->exit(-EINVAL);
-- 
2.41.0



More information about the libcamera-devel mailing list