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

Commit 08af10ea authored by Yiyi Shen's avatar Yiyi Shen
Browse files

[MR2] Move binder call to BT out of synchronized method

Test: atest com.android.server.media.AudioManagerRouteControllerTest
Bug: 411578057
Flag: com.android.media.flags.enable_output_switcher_personal_audio_sharing
Change-Id: I8d8a3ef5acd3da5b4dd33779bc85a3f58b62e240
parent 0aea9808
Loading
Loading
Loading
Loading
+19 −14
Original line number Diff line number Diff line
@@ -525,6 +525,12 @@ import java.util.concurrent.CopyOnWriteArrayList;
                com.android.media.flags.Flags.enableOutputSwitcherPersonalAudioSharing()
                        && mBluetoothRouteController.isLEAudioBroadcastSupported();

        List<MediaRoute2Info> bluetoothRoutesInBroadcast = Collections.emptyList();
        if (com.android.media.flags.Flags.enableOutputSwitcherPersonalAudioSharing()
                && selectedDeviceAttributesType == AudioDeviceInfo.TYPE_BLE_BROADCAST) {
            bluetoothRoutesInBroadcast = mBluetoothRouteController.getBroadcastingDeviceRoutes();
        }

        updateAvailableRoutes(
                selectedDeviceAttributesType,
                selectedDeviceAttributesAddr,
@@ -534,7 +540,8 @@ import java.util.concurrent.CopyOnWriteArrayList;
                /* musicVolume= */ mAudioManager.getStreamVolume(AudioManager.STREAM_MUSIC),
                /* musicMaxVolume= */ mAudioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC),
                /* isVolumeFixed= */ mAudioManager.isVolumeFixed(),
                /* isLEAudioBroadcastSupported= */ isLEAudioBroadcastSupported);
                /* isLEAudioBroadcastSupported= */ isLEAudioBroadcastSupported,
                /* bluetoothRoutesInBroadcast= */ bluetoothRoutesInBroadcast);
    }

    /**
@@ -567,18 +574,17 @@ import java.util.concurrent.CopyOnWriteArrayList;
            int musicVolume,
            int musicMaxVolume,
            boolean isVolumeFixed,
            boolean isLEAudioBroadcastSupported) {
            boolean isLEAudioBroadcastSupported,
            List<MediaRoute2Info> bluetoothRoutesInBroadcast) {
        mRouteIdToAvailableDeviceRoutes.clear();
        MediaRoute2InfoHolder newSelectedRouteHolder = null;
        List<MediaRoute2InfoHolder> newSelectedRouteInfoHoldersInBroadcast = new ArrayList<>();

        boolean currentOutputIsBLEBroadcast =
                selectedDeviceAttributesType == AudioDeviceInfo.TYPE_BLE_BROADCAST;
        if (com.android.media.flags.Flags.enableOutputSwitcherPersonalAudioSharing()) {
        // When broadcasting, certain audioDeviceInfos from AudioManager are not reliable.
        if (currentOutputIsBLEBroadcast) {
                for (MediaRoute2Info mediaRoute2Info :
                        mBluetoothRouteController.getBroadcastingDeviceRoutes()) {
            for (MediaRoute2Info mediaRoute2Info : bluetoothRoutesInBroadcast) {
                // Need to reconstruct MediaRoute2Info from BluetoothDeviceRoutesController
                MediaRoute2InfoHolder newHolder =
                        MediaRoute2InfoHolder.createForAudioManagerRoute(
@@ -587,7 +593,6 @@ import java.util.concurrent.CopyOnWriteArrayList;
                newSelectedRouteInfoHoldersInBroadcast.add(newHolder);
            }
        }
        }

        for (AudioDeviceInfo audioDeviceInfo : audioDeviceInfos) {
            if (com.android.media.flags.Flags.enableOutputSwitcherPersonalAudioSharing()) {