Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 1aee6449 authored by Eric Laurent's avatar Eric Laurent
Browse files

AudioService: fix volumegroup mute sync

When aligning the mute state of streams and volume groups, make sure
the volume group is not unmuted if the stream is muted.

Bug: 266211560
Test: repro steps in bug
Change-Id: I073b89a84d160e47511ee77ff486681ffa41ea3f
parent 498f1e90
Loading
Loading
Loading
Loading
+6 −4
Original line number Diff line number Diff line
@@ -5202,7 +5202,8 @@ public class AudioService extends IAudioService.Stub
            if (!shouldMute) {
                // unmute
                // ring and notifications volume should never be 0 when not silenced
                if (mStreamVolumeAlias[streamType] == AudioSystem.STREAM_RING) {
                if (mStreamVolumeAlias[streamType] == AudioSystem.STREAM_RING
                        || mStreamVolumeAlias[streamType] == AudioSystem.STREAM_NOTIFICATION) {
                    synchronized (VolumeStreamState.class) {
                        final VolumeStreamState vss = mStreamStates[streamType];
                        for (int i = 0; i < vss.mIndexMap.size(); i++) {
@@ -5927,6 +5928,8 @@ public class AudioService extends IAudioService.Stub
            }
        }
        readVolumeGroupsSettings(userSwitch);
        // apply new ringer mode before checking volume for alias streams so that streams
        // muted by ringer mode have the correct volume
        setRingerModeInt(getRingerModeInternal(), false);
@@ -5944,8 +5947,6 @@ public class AudioService extends IAudioService.Stub
            }
        }
        readVolumeGroupsSettings(userSwitch);
        if (DEBUG_VOL) {
            Log.d(TAG, "Restoring device volume behavior");
        }
@@ -8387,7 +8388,8 @@ public class AudioService extends IAudioService.Stub
                    // Only propage mute of stream when applicable
                    if (isMutable()) {
                        // 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 || mIsMuted);
                    }
                }
            }