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

Commit 26cc6b41 authored by Kausik Sinnaswamy's avatar Kausik Sinnaswamy Committed by Zhihai Xu
Browse files

Fix for AV lockup on local and remote start collision

Bug: 7002859

Change-Id: I6170be864b44011b98e08d7e2599021a3eec70a3
parent 03de91b6
Loading
Loading
Loading
Loading
+5 −3
Original line number Diff line number Diff line
@@ -723,10 +723,10 @@ void bta_av_role_res (tBTA_AV_SCB *p_scb, tBTA_AV_DATA *p_data)
    {
        if (p_scb->wait & BTA_AV_WAIT_ROLE_SW_STARTED)
        {
            p_scb->role &= ~BTA_AV_ROLE_START_INT;
            p_scb->wait &= ~BTA_AV_WAIT_ROLE_SW_BITS;
            if (p_data->role_res.hci_status != HCI_SUCCESS)
            {
                p_scb->role &= ~BTA_AV_ROLE_START_INT;
                bta_sys_idle(BTA_ID_AV, bta_av_cb.audio_open_cnt, p_scb->peer_addr);
                /* start failed because of role switch. */
                start.chnl   = p_scb->chnl;
@@ -1779,8 +1779,10 @@ void bta_av_do_start (tBTA_AV_SCB *p_scb, tBTA_AV_DATA *p_data)

        AVDT_StartReq(&p_scb->avdt_handle, 1);
    }
    else
    else if (p_scb->started)
    {
        p_scb->role |= BTA_AV_ROLE_START_INT;
        if ( p_scb->wait == 0 )
           bta_av_start_ok(p_scb, NULL);
    }
    APPL_TRACE_DEBUG2("started %d role:x%x", p_scb->started, p_scb->role);
+1 −1
Original line number Diff line number Diff line
@@ -485,10 +485,10 @@ static BOOLEAN btif_av_state_opened_handler(btif_sm_event_t event, void *p_data)
            BTIF_TRACE_EVENT3("BTA_AV_START_EVT status %d, suspending %d, init %d",
                p_av->start.status, p_av->start.suspending, p_av->start.initiator);

            btif_av_cb.flags &= ~BTIF_AV_FLAG_PENDING_START;
            if ((p_av->start.status == BTA_SUCCESS) && (p_av->start.suspending == TRUE))
                return TRUE;

            btif_av_cb.flags &= ~BTIF_AV_FLAG_PENDING_START;
            btif_a2dp_on_started(&p_av->start);

            /* remain in open state if status failed */