diff --git a/services/core/java/com/android/server/audio/AudioService.java b/services/core/java/com/android/server/audio/AudioService.java index a96d1f44deed8..2130c38f4d620 100644 --- a/services/core/java/com/android/server/audio/AudioService.java +++ b/services/core/java/com/android/server/audio/AudioService.java @@ -1535,6 +1535,7 @@ public class AudioService extends IAudioService.Stub } synchronized (mAudioPolicies) { + ArrayList invalidProxies = new ArrayList<>(); for (AudioPolicyProxy policy : mAudioPolicies.values()) { final int status = policy.connectMixes(); if (status != AudioSystem.SUCCESS) { @@ -1542,7 +1543,7 @@ public class AudioService extends IAudioService.Stub Log.e(TAG, "onAudioServerDied: error " + AudioSystem.audioSystemErrorToString(status) + " when connecting mixes for policy " + policy.toLogFriendlyString()); - policy.release(); + invalidProxies.add(policy); } else { final int deviceAffinitiesStatus = policy.setupDeviceAffinities(); if (deviceAffinitiesStatus != AudioSystem.SUCCESS) { @@ -1550,10 +1551,12 @@ public class AudioService extends IAudioService.Stub + AudioSystem.audioSystemErrorToString(deviceAffinitiesStatus) + " when connecting device affinities for policy " + policy.toLogFriendlyString()); - policy.release(); + invalidProxies.add(policy); } } } + invalidProxies.forEach((policy) -> policy.release()); + } // Restore capture policies