Camera: Handle single logical requests when notifying requests
Consider cases where clients pass single logical capture requests
to physical outputs and notify request frame number listeners
accordingly.
Bug: 292144312
Test: Camera CTS
Change-Id: I3a44cc9a7eaa5b2107f494bddb5e80706eec2bfd
Merged-In: I3a44cc9a7eaa5b2107f494bddb5e80706eec2bfd
diff --git a/services/camera/libcameraservice/device3/Camera3Device.cpp b/services/camera/libcameraservice/device3/Camera3Device.cpp
index 61c3298..e5228d3 100644
--- a/services/camera/libcameraservice/device3/Camera3Device.cpp
+++ b/services/camera/libcameraservice/device3/Camera3Device.cpp
@@ -4010,8 +4010,11 @@
sp<Camera3Device> parent = mParent.promote();
if (parent != nullptr) {
const String8& streamCameraId = outputStream->getPhysicalCameraId();
+ // Consider the case where clients are sending a single logical camera request
+ // to physical output/outputs
+ bool singleRequest = captureRequest->mSettingsList.size() == 1;
for (const auto& settings : captureRequest->mSettingsList) {
- if ((streamCameraId.isEmpty() &&
+ if (((streamCameraId.isEmpty() || singleRequest) &&
parent->getId() == settings.cameraId.c_str()) ||
streamCameraId == settings.cameraId.c_str()) {
outputStream->fireBufferRequestForFrameNumber(