Merge "AudioService: fix muting of aliased volume streams" into tm-qpr-dev

This commit is contained in:
Eric Laurent
2023-02-02 08:45:56 +00:00
committed by Android (Google) Code Review

View File

@@ -3507,11 +3507,12 @@ public class AudioService extends IAudioService.Stub
synchronized (VolumeStreamState.class) { synchronized (VolumeStreamState.class) {
List<Integer> streamsToMute = new ArrayList<>(); List<Integer> streamsToMute = new ArrayList<>();
for (int stream = 0; stream < mStreamStates.length; stream++) { for (int stream = 0; stream < mStreamStates.length; stream++) {
if (streamAlias == mStreamVolumeAlias[stream]) { VolumeStreamState vss = mStreamStates[stream];
if (streamAlias == mStreamVolumeAlias[stream] && vss.isMutable()) {
if (!(readCameraSoundForced() if (!(readCameraSoundForced()
&& (mStreamStates[stream].getStreamType() && (vss.getStreamType()
== AudioSystem.STREAM_SYSTEM_ENFORCED))) { == AudioSystem.STREAM_SYSTEM_ENFORCED))) {
boolean changed = mStreamStates[stream].mute(state, /* apply= */ false); boolean changed = vss.mute(state, /* apply= */ false);
if (changed) { if (changed) {
streamsToMute.add(stream); streamsToMute.add(stream);
} }
@@ -8384,7 +8385,7 @@ public class AudioService extends IAudioService.Stub
} }
mVolumeGroupState.updateVolumeIndex(groupIndex, device); mVolumeGroupState.updateVolumeIndex(groupIndex, device);
// Only propage mute of stream when applicable // Only propage mute of stream when applicable
if (mIndexMin == 0 || isCallStream(mStreamType)) { if (isMutable()) {
// For call stream, align mute only when muted, not when index is set to 0 // For call stream, align mute only when muted, not when index is set to 0
mVolumeGroupState.mute(forceMuteState ? mIsMuted : groupIndex == 0); mVolumeGroupState.mute(forceMuteState ? mIsMuted : groupIndex == 0);
} }
@@ -8435,6 +8436,12 @@ public class AudioService extends IAudioService.Stub
return mIsMuted || mIsMutedInternally; return mIsMuted || mIsMutedInternally;
} }
private boolean isMutable() {
return isStreamAffectedByMute(mStreamType)
&& (mIndexMin == 0 || isCallStream(mStreamType));
}
/** /**
* Mute/unmute the stream * Mute/unmute the stream
* @param state the new mute state * @param state the new mute state