diff --git a/services/core/java/com/android/server/audio/AudioService.java b/services/core/java/com/android/server/audio/AudioService.java index 18d5194e8bc0e..4f17ad6592c8b 100644 --- a/services/core/java/com/android/server/audio/AudioService.java +++ b/services/core/java/com/android/server/audio/AudioService.java @@ -1572,6 +1572,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) { @@ -1579,7 +1580,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) { @@ -1587,10 +1588,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