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
This commit is contained in:
Shuzhen Wang
2021-03-19 20:20:07 +00:00
committed by Automerger Merge Worker

View File

@@ -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);
}