Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 468dbb8d authored by Shuzhen Wang's avatar Shuzhen Wang
Browse files

Camera: Do not expect dropped physical camera metadata

The HAL is allowed to notify RESULT_ERROR for physical sub-cameras.
Fix the condition check to allow absent physical metadata in such case.

Test: Partner testing and camera CTS
Bug: 138727686
Change-Id: I411a64d6fec2e06bc60a82fade65a02caab0ceca
parent f4ebe698
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -3679,7 +3679,7 @@ void Camera3Device::processCaptureResult(const camera3_capture_result *result) {
        // Did we get the (final) result metadata for this capture?
        if (result->result != NULL && !isPartialResult) {
            if (request.physicalCameraIds.size() != result->num_physcam_metadata) {
                SET_ERR("Requested physical Camera Ids %d not equal to number of metadata %d",
                SET_ERR("Expected physical Camera metadata count %d not equal to actual count %d",
                        request.physicalCameraIds.size(), result->num_physcam_metadata);
                return;
            }
@@ -3873,12 +3873,14 @@ void Camera3Device::notifyError(const camera3_error_msg_t &msg,
                            errorCode) {
                        if (physicalCameraId.size() > 0) {
                            String8 cameraId(physicalCameraId);
                            if (r.physicalCameraIds.find(cameraId) == r.physicalCameraIds.end()) {
                            auto iter = r.physicalCameraIds.find(cameraId);
                            if (iter == r.physicalCameraIds.end()) {
                                ALOGE("%s: Reported result failure for physical camera device: %s "
                                        " which is not part of the respective request!",
                                        __FUNCTION__, cameraId.string());
                                break;
                            }
                            r.physicalCameraIds.erase(iter);
                            resultExtras.errorPhysicalCameraId = physicalCameraId;
                        } else {
                            logicalDeviceResultError = true;