diff options
author | Shuzhen Wang <shuzhenwang@google.com> | 2021-03-19 18:34:00 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2021-03-19 18:34:00 +0000 |
commit | 171249e857480b899a1fdb3149519f0dffa2d5ab (patch) | |
tree | 42bc825df016e264e270039561bb3ba69d83c277 /core/java | |
parent | 08d538076290628d9be5a9196e5a752beba12498 (diff) | |
parent | 3759c1623dd13f65482526382d6008718636a2a4 (diff) |
Merge "Camera: Fix a removal-while-iterate bug"
Diffstat (limited to 'core/java')
-rw-r--r-- | core/java/android/hardware/camera2/CameraManager.java | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/core/java/android/hardware/camera2/CameraManager.java b/core/java/android/hardware/camera2/CameraManager.java index 7f834afd7b30..933dee3a6470 100644 --- a/core/java/android/hardware/camera2/CameraManager.java +++ b/core/java/android/hardware/camera2/CameraManager.java @@ -2024,7 +2024,9 @@ public final class CameraManager { // Tell listeners that the cameras and torch modes are unavailable and schedule a // reconnection to camera service. When camera service is reconnected, the camera // and torch statuses will be updated. - for (int i = 0; i < mDeviceStatus.size(); i++) { + // Iterate from the end to the beginning befcause onStatusChangedLocked removes + // entries from the ArrayMap. + for (int i = mDeviceStatus.size() - 1; i >= 0; i--) { String cameraId = mDeviceStatus.keyAt(i); onStatusChangedLocked(ICameraServiceListener.STATUS_NOT_PRESENT, cameraId); } |