diff options
author | 2025-02-21 15:32:47 -0800 | |
---|---|---|
committer | 2025-02-21 15:32:47 -0800 | |
commit | 6fa5bdd136f09fba0d8eaf8f9f0e62b4a790728f (patch) | |
tree | b8fbcad14046d5e87196a9be91d33180af4267e6 | |
parent | c3fc404ab293f487c337b99e7ec933a5add9aa19 (diff) | |
parent | 9424d9539f85e21774f9e5739260a14003b44a3b (diff) |
Merge "AudioService: RttEnabled as atomic boolean" into main
-rw-r--r-- | services/core/java/com/android/server/audio/AudioService.java | 29 | ||||
-rw-r--r-- | services/tests/servicestests/src/com/android/server/audio/AudioServiceTest.java | 12 |
2 files changed, 29 insertions, 12 deletions
diff --git a/services/core/java/com/android/server/audio/AudioService.java b/services/core/java/com/android/server/audio/AudioService.java index ee37e97d7ad8..4e84733d540f 100644 --- a/services/core/java/com/android/server/audio/AudioService.java +++ b/services/core/java/com/android/server/audio/AudioService.java @@ -1269,8 +1269,7 @@ public class AudioService extends IAudioService.Stub } }; - @GuardedBy("mSettingsLock") - private boolean mRttEnabled = false; + private AtomicBoolean mRttEnabled = new AtomicBoolean(false); private AtomicBoolean mMasterMute = new AtomicBoolean(false); @@ -2091,13 +2090,13 @@ public class AudioService extends IAudioService.Stub // Restore setParameters and other queued setters. mRestorableParameters.restoreAll(); + final int forDock = mDockAudioMediaEnabled ? + AudioSystem.FORCE_DIGITAL_DOCK : AudioSystem.FORCE_NONE; + mDeviceBroker.setForceUse_Async(AudioSystem.FOR_DOCK, forDock, "onAudioServerDied"); + sendEncodedSurroundMode(mContentResolver, "onAudioServerDied"); + sendEnabledSurroundFormats(mContentResolver, true); + AudioSystem.setRttEnabled(mRttEnabled.get()); synchronized (mSettingsLock) { - final int forDock = mDockAudioMediaEnabled ? - AudioSystem.FORCE_DIGITAL_DOCK : AudioSystem.FORCE_NONE; - mDeviceBroker.setForceUse_Async(AudioSystem.FOR_DOCK, forDock, "onAudioServerDied"); - sendEncodedSurroundMode(mContentResolver, "onAudioServerDied"); - sendEnabledSurroundFormats(mContentResolver, true); - AudioSystem.setRttEnabled(mRttEnabled); resetAssistantServicesUidsLocked(); } @@ -3234,9 +3233,10 @@ public class AudioService extends IAudioService.Stub sendEnabledSurroundFormats(cr, true); updateAssistantUIdLocked(/* forceUpdate= */ true); resetActiveAssistantUidsLocked(); - AudioSystem.setRttEnabled(mRttEnabled); } + AudioSystem.setRttEnabled(mRttEnabled.get()); + mMuteAffectedStreams = mSettings.getSystemIntForUser(cr, System.MUTE_STREAMS_AFFECTED, AudioSystem.DEFAULT_MUTE_STREAMS_AFFECTED, UserHandle.USER_CURRENT); @@ -6836,7 +6836,7 @@ public class AudioService extends IAudioService.Stub return false; } - /** @see AudioManager#setRttEnabled() */ + /** @see AudioManager#setRttEnabled(boolean) */ @Override public void setRttEnabled(boolean rttEnabled) { if (mContext.checkCallingOrSelfPermission( @@ -6846,8 +6846,8 @@ public class AudioService extends IAudioService.Stub + Binder.getCallingPid() + ", uid=" + Binder.getCallingUid()); return; } - synchronized (mSettingsLock) { - mRttEnabled = rttEnabled; + synchronized (this) { + mRttEnabled.set(rttEnabled); final long identity = Binder.clearCallingIdentity(); try { AudioSystem.setRttEnabled(rttEnabled); @@ -6857,6 +6857,11 @@ public class AudioService extends IAudioService.Stub } } + @VisibleForTesting(visibility = PACKAGE) + protected boolean isRttEnabled() { + return mRttEnabled.get(); + } + /** @see AudioManager#adjustSuggestedStreamVolumeForUid(int, int, int, String, int, int, int) */ @Override public void adjustSuggestedStreamVolumeForUid(int streamType, int direction, int flags, diff --git a/services/tests/servicestests/src/com/android/server/audio/AudioServiceTest.java b/services/tests/servicestests/src/com/android/server/audio/AudioServiceTest.java index aa9d2058e659..9e8c34eabd40 100644 --- a/services/tests/servicestests/src/com/android/server/audio/AudioServiceTest.java +++ b/services/tests/servicestests/src/com/android/server/audio/AudioServiceTest.java @@ -259,4 +259,16 @@ public class AudioServiceTest { inputGainIndex, mAudioService.getInputGainIndex(ada)); } + + @Test + public void testRttEnabled() throws Exception { + Log.i(TAG, "running testRttEnabled"); + Assert.assertNotNull(mAudioService); + + mAudioService.setRttEnabled(true); + Assert.assertTrue(mAudioService.isRttEnabled()); + + mAudioService.setRttEnabled(false); + Assert.assertFalse(mAudioService.isRttEnabled()); + } } |