diff options
| author | 2021-03-19 20:20:07 +0000 | |
|---|---|---|
| committer | 2021-03-19 20:20:07 +0000 | |
| commit | 71ca7dff7e092477a42f8eb396616921e4d64e8c (patch) | |
| tree | 8666a3c2b5c45b65059a2748dcf8fad877b0df05 | |
| parent | 452d2916b9ba364147ed90e03b36e5e1bd753bc2 (diff) | |
| parent | 7b8379f55d63322d6f353a139d8f869cf843b38b (diff) | |
Merge "Camera: Fix a removal-while-iterate bug" am: 171249e857 am: f1f504042a am: 7b8379f55d
Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/1643703
Change-Id: I16a4e5430872102f2650845d29f4a7ee7a4c7580
| -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 a3c6f2f1eafd..b7b1a147c822 100644 --- a/core/java/android/hardware/camera2/CameraManager.java +++ b/core/java/android/hardware/camera2/CameraManager.java @@ -2030,7 +2030,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); } |