[PATCH v4 6/7] android: notify CAMERA3_MSG_ERROR_REQUEST out of order

Harvey Yang chenghaoyang at chromium.org
Tue Dec 10 15:23:59 CET 2024


When a request hasn't done any processing, CAMERA3_MSG_ERROR_REQUEST and
the following process_capture_result don't need to wait for the previous
requests' completion. This patch avoids pushing the aborted requests
into the request queue.

Signed-off-by: Han-Lin Chen <hanlinchen at chromium.org>
Co-developed-by: Harvey Yang <chenghaoyang at chromium.org>
Signed-off-by: Harvey Yang <chenghaoyang at chromium.org>
Reviewed-by: Jacopo Mondi <jacopo.mondi at ideasonboard.com>
---
 src/android/camera_device.cpp | 11 +++--------
 1 file changed, 3 insertions(+), 8 deletions(-)

diff --git a/src/android/camera_device.cpp b/src/android/camera_device.cpp
index 3b10f207e..a95114c8d 100644
--- a/src/android/camera_device.cpp
+++ b/src/android/camera_device.cpp
@@ -867,6 +867,8 @@ void CameraDevice::abortRequest(Camera3RequestDescriptor *descriptor) const
 		buffer.status = StreamBuffer::Status::Error;
 
 	descriptor->status_ = Camera3RequestDescriptor::Status::Error;
+
+	sendCaptureResult(descriptor);
 }
 
 bool CameraDevice::isValidRequest(camera3_capture_request_t *camera3Request) const
@@ -1135,14 +1137,7 @@ int CameraDevice::processCaptureRequest(camera3_capture_request_t *camera3Reques
 	MutexLocker stateLock(stateMutex_);
 
 	if (state_ == State::Flushing) {
-		Camera3RequestDescriptor *rawDescriptor = descriptor.get();
-		{
-			MutexLocker descriptorsLock(descriptorsMutex_);
-			descriptors_.push(std::move(descriptor));
-		}
-		abortRequest(rawDescriptor);
-		completeDescriptor(rawDescriptor);
-
+		abortRequest(descriptor.get());
 		return 0;
 	}
 
-- 
2.47.0.338.g60cca15819-goog



More information about the libcamera-devel mailing list