diff --git a/services/core/java/com/android/server/audio/AudioService.java b/services/core/java/com/android/server/audio/AudioService.java index 5628f94820e4e..b1708d604b643 100644 --- a/services/core/java/com/android/server/audio/AudioService.java +++ b/services/core/java/com/android/server/audio/AudioService.java @@ -5578,6 +5578,7 @@ public class AudioService extends IAudioService.Stub /** * @return true if there is currently a registered dynamic mixing policy that affects media + * and is not a render + loopback policy */ /*package*/ boolean hasMediaDynamicPolicy() { synchronized (mAudioPolicies) { @@ -5586,7 +5587,8 @@ public class AudioService extends IAudioService.Stub } final Collection appColl = mAudioPolicies.values(); for (AudioPolicyProxy app : appColl) { - if (app.hasMixAffectingUsage(AudioAttributes.USAGE_MEDIA)) { + if (app.hasMixAffectingUsage(AudioAttributes.USAGE_MEDIA, + AudioMix.ROUTE_FLAG_LOOP_BACK_RENDER)) { return true; } } @@ -7349,9 +7351,10 @@ public class AudioService extends IAudioService.Stub Binder.restoreCallingIdentity(identity); } - boolean hasMixAffectingUsage(int usage) { + boolean hasMixAffectingUsage(int usage, int excludedFlags) { for (AudioMix mix : mMixes) { - if (mix.isAffectingUsage(usage)) { + if (mix.isAffectingUsage(usage) + && ((mix.getRouteFlags() & excludedFlags) != excludedFlags)) { return true; } }