diff options
| author | 2023-01-18 07:00:39 +0000 | |
|---|---|---|
| committer | 2023-01-18 07:00:39 +0000 | |
| commit | a8a2f257cc730c836a990414a966828746f10c42 (patch) | |
| tree | a2cc2a8f87ca23adb324fda0b92d2be428b73a3c | |
| parent | 1d2eb78365e680296c294163b4f298fe6efd1f8b (diff) | |
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
| -rw-r--r-- | core/java/android/hardware/camera2/CameraManager.java | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/core/java/android/hardware/camera2/CameraManager.java b/core/java/android/hardware/camera2/CameraManager.java index 4dc6e9310220..dff670773ccd 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<String> unavailableIds = mUnavailablePhysicalDevices.get(id); + for (String unavailableId : unavailableIds) { + postSingleUpdate(callback, executor, id, unavailableId, + ICameraServiceListener.STATUS_NOT_PRESENT); + } + } } } // onStatusChangedLocked |