diff --git a/services/core/java/com/android/server/audio/AudioService.java b/services/core/java/com/android/server/audio/AudioService.java index a51b187e8634..56874f74afb1 100644 --- a/services/core/java/com/android/server/audio/AudioService.java +++ b/services/core/java/com/android/server/audio/AudioService.java @@ -1517,6 +1517,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) { @@ -1524,7 +1525,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) { @@ -1532,10 +1533,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