From e620bc2a8e5f236b4d57a0a525a81eda2578425b Mon Sep 17 00:00:00 2001 From: Jean-Michel Trivi Date: Tue, 31 Jan 2023 05:30:36 +0000 Subject: [PATCH] AudioService: fix stream aliasing update When updating the stream aliases table, mStreamVolumeAlias should point to a copy of the default alias table it's starting from, not its reference. This fixes an issue where changing the aliasing between ring and notification would work when unaliasing, but not when aliasing, as the contents of the alias table had been overwritten already. Bug: 265076070 Test: atest android.media.audio.cts.AudioManagerTest#testStreamTypeAliasChange Change-Id: I74bc7fdf054ef295876c8a5503111c14d084e8d2 --- .../core/java/com/android/server/audio/AudioService.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/services/core/java/com/android/server/audio/AudioService.java b/services/core/java/com/android/server/audio/AudioService.java index 359a18a0a048b..8de6a439642d2 100644 --- a/services/core/java/com/android/server/audio/AudioService.java +++ b/services/core/java/com/android/server/audio/AudioService.java @@ -2206,19 +2206,19 @@ public class AudioService extends IAudioService.Stub AudioSystem.STREAM_ASSISTANT : AudioSystem.STREAM_MUSIC; if (mIsSingleVolume) { - mStreamVolumeAlias = STREAM_VOLUME_ALIAS_TELEVISION; + mStreamVolumeAlias = STREAM_VOLUME_ALIAS_TELEVISION.clone(); dtmfStreamAlias = AudioSystem.STREAM_MUSIC; } else if (mUseVolumeGroupAliases) { - mStreamVolumeAlias = STREAM_VOLUME_ALIAS_NONE; + mStreamVolumeAlias = STREAM_VOLUME_ALIAS_NONE.clone(); dtmfStreamAlias = AudioSystem.STREAM_DTMF; } else { switch (mPlatformType) { case AudioSystem.PLATFORM_VOICE: - mStreamVolumeAlias = STREAM_VOLUME_ALIAS_VOICE; + mStreamVolumeAlias = STREAM_VOLUME_ALIAS_VOICE.clone(); dtmfStreamAlias = AudioSystem.STREAM_RING; break; default: - mStreamVolumeAlias = STREAM_VOLUME_ALIAS_DEFAULT; + mStreamVolumeAlias = STREAM_VOLUME_ALIAS_DEFAULT.clone(); dtmfStreamAlias = AudioSystem.STREAM_MUSIC; } if (!mNotifAliasRing) {