summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Michelle Ho <himichelle@google.com> 2023-01-18 07:00:39 +0000
committer Michelle Ho <himichelle@google.com> 2023-01-18 07:00:39 +0000
commita8a2f257cc730c836a990414a966828746f10c42 (patch)
treea2cc2a8f87ca23adb324fda0b92d2be428b73a3c
parent1d2eb78365e680296c294163b4f298fe6efd1f8b (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.java9
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