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

Commit 5196d04f authored by Henri Chataing's avatar Henri Chataing Committed by Automerger Merge Worker
Browse files

Merge "a2dp: Do not call btif_a2dp_on_started when BTA_AV_START_EVT is...

Merge "a2dp: Do not call btif_a2dp_on_started when BTA_AV_START_EVT is received as source and responder" into main am: 3ddcd553

Original change: https://android-review.googlesource.com/c/platform/packages/modules/Bluetooth/+/3092465



Change-Id: Ic94bc50acea339a1d340f65893f846a902d7d83a
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents 77395f8d 3ddcd553
Loading
Loading
Loading
Loading
+15 −7
Original line number Diff line number Diff line
@@ -2434,6 +2434,9 @@ bool BtifAvStateMachine::StateOpened::ProcessEvent(uint32_t event,
    case BTIF_AV_ACL_DISCONNECTED:
      break;  // Ignore

    // Event sent by the Bluetooth Audio HAL to a source A2DP stack
    // when a stream is ready to play. The stack shall send AVDTP Start to the
    // remote device to start the stream.
    case BTIF_AV_START_STREAM_REQ_EVT: {
      log::info("Peer {} : event={} flags={}", peer_.PeerAddress(),
                BtifAvEvent::EventName(event), peer_.FlagsToString());
@@ -2449,6 +2452,10 @@ bool BtifAvStateMachine::StateOpened::ProcessEvent(uint32_t event,
      peer_.SetFlags(BtifAvPeer::kFlagPendingStart);
    } break;

    // Event sent by lower layer to indicate that the AVDTP stream is started.
    // May be initiated by the remote device to start a stream, in this case the
    // event is ignored by source A2DP, and the stack shall immediately suspend
    // the stream.
    case BTA_AV_START_EVT: {
      log::info(
          "Peer {} : event={} status={} suspending={} initiator={} flags={}",
@@ -2475,15 +2482,16 @@ bool BtifAvStateMachine::StateOpened::ProcessEvent(uint32_t event,
          should_suspend = true;
        }

        // If peer is A2DP Source, do ACK commands to audio HAL and start
        // media task
        // Invoke the started handler only when initiator.
        if (!com::android::bluetooth::flags::a2dp_ignore_started_when_responder() ||
            peer_.CheckFlags(BtifAvPeer::kFlagPendingStart)) {
          if (btif_a2dp_on_started(
                peer_.PeerAddress(), &p_av->start,
                peer_.IsSource() ? A2dpType::kSink : A2dpType::kSource)) {
                  peer_.PeerAddress(), &p_av->start, A2dpType::kSource)) {
            // Only clear pending flag after acknowledgement
            peer_.ClearFlags(BtifAvPeer::kFlagPendingStart);
          }
        }
      }

      // Remain in Open state if status failed
      if (p_av->start.status != BTA_AV_SUCCESS) return false;