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

Commit fd938220 authored by Grzegorz Kołodziejczyk's avatar Grzegorz Kołodziejczyk
Browse files

bass: Avoid double add of devices from group

When group operation flag is set there is possibility that second device
from set would not have cached metadata. This change correct caching
place to internal loop iterating over set devices.

Tag: #feature
Test: atest LeAudioServiceTest LeAudioBroadcastServiceTest
Bug: 298080973
Bug: 308171251
Change-Id: Iab45ce3d06cf845e3ba3036eec3e5ad280a0006b
parent 26582860
Loading
Loading
Loading
Loading
+7 −3
Original line number Diff line number Diff line
@@ -1247,9 +1247,6 @@ public class BassClientService extends ProfileService {
            return;
        }

        /* Store metadata for sink device */
        mBroadcastMetadataMap.put(sink, sourceMetadata);

        byte[] code = sourceMetadata.getBroadcastCode();
        for (BluetoothDevice device : devices) {
            BassClientStateMachine stateMachine = getOrCreateStateMachine(device);
@@ -1291,6 +1288,10 @@ public class BassClientService extends ProfileService {
                        enqueueSourceGroupOp(
                                device, BassClientStateMachine.ADD_BCAST_SOURCE, sourceMetadata);
                    }

                    /* Store metadata for sink device */
                    mBroadcastMetadataMap.put(device, sourceMetadata);

                    Message message =
                            stateMachine.obtainMessage(BassClientStateMachine.SWITH_BCAST_SOURCE);
                    message.obj = sourceMetadata;
@@ -1320,6 +1321,9 @@ public class BassClientService extends ProfileService {
                }
            }

            /* Store metadata for sink device */
            mBroadcastMetadataMap.put(device, sourceMetadata);

            if (isGroupOp) {
                enqueueSourceGroupOp(device, BassClientStateMachine.ADD_BCAST_SOURCE,
                        sourceMetadata);