From a8a2f257cc730c836a990414a966828746f10c42 Mon Sep 17 00:00:00 2001 From: Michelle Ho Date: Wed, 18 Jan 2023 07:00:39 +0000 Subject: [PATCH] RESTRICT AUTOMERGE Camera: Fix missing onPhysicalCameraUnavailable When onCameraAvailable invoked for a logical multi-camera, all of the physical cameras of a logical multi-camera are default available (i.e., no onPhysicalCameraAvailable would be called). So if some specific physical cameras are unavailable, onPhysicalCameraUnavailable should be invoked after onCameraAvailable. Bug: 262979670 Test: atest CameraManagerTest Change-Id: I77d32cd1d1c5a6c63950961724af7b41f8cdf1e6 --- core/java/android/hardware/camera2/CameraManager.java | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/core/java/android/hardware/camera2/CameraManager.java b/core/java/android/hardware/camera2/CameraManager.java index 4dc6e9310220e..dff670773ccdb 100644 --- a/core/java/android/hardware/camera2/CameraManager.java +++ b/core/java/android/hardware/camera2/CameraManager.java @@ -2353,6 +2353,15 @@ public final class CameraManager { final AvailabilityCallback callback = mCallbackMap.keyAt(i); postSingleUpdate(callback, executor, id, null /*physicalId*/, status); + + // Send the NOT_PRESENT state for unavailable physical cameras + if (isAvailable(status) && mUnavailablePhysicalDevices.containsKey(id)) { + ArrayList unavailableIds = mUnavailablePhysicalDevices.get(id); + for (String unavailableId : unavailableIds) { + postSingleUpdate(callback, executor, id, unavailableId, + ICameraServiceListener.STATUS_NOT_PRESENT); + } + } } } // onStatusChangedLocked