AudioService: fix deallock setBluetoothScoOn vs setMode

In AudioService:
setBluetoothScoOn()
  > setBluetoothScoOnInt()
     > synchronized(mSettingsLock)
     > muteRingerModeStreams()
	> synchronized (VolumeStreamState.class)
vs
setMode()
  > setModeInt()
     > synchronized (mSettingsLock)
        > synchronized (VolumeStreamState.class)

The issue comes from setBluetoothScoOnInt() releasing the lock
  on mSettingsLock before calling muteRingerModeStreams(). This
  breaks the expected lock ordering in AudioService, where
  mSettingsLock must be locked before VolumeStreamState.class.

Bug: 109746821
Test: see bug
Change-Id: I853ca60781efc506626b6345f27da701655ac359
diff --git a/services/core/java/com/android/server/audio/AudioService.java b/services/core/java/com/android/server/audio/AudioService.java
index 3fd69ee..db5f7ed 100644
--- a/services/core/java/com/android/server/audio/AudioService.java
+++ b/services/core/java/com/android/server/audio/AudioService.java
@@ -2623,6 +2623,7 @@
         broadcastRingerMode(AudioManager.RINGER_MODE_CHANGED_ACTION, ringerMode);
     }
 
+    @GuardedBy("mSettingsLock")
     private void muteRingerModeStreams() {
         // Mute stream if not previously muted by ringer mode and (ringer mode
         // is not RINGER_MODE_NORMAL OR stream is zen muted) and stream is affected by ringer mode.
@@ -2710,10 +2711,9 @@
         synchronized(mSettingsLock) {
             change = mRingerMode != ringerMode;
             mRingerMode = ringerMode;
+            muteRingerModeStreams();
         }
 
-        muteRingerModeStreams();
-
         // Post a persist ringer mode msg
         if (persist) {
             sendMsg(mAudioHandler, MSG_PERSIST_RINGER_MODE,