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

Commit 997c8d25 authored by Kausik Sinnaswamy's avatar Kausik Sinnaswamy Committed by Android Git Automerger
Browse files

am 26cc6b41: Fix for AV lockup on local and remote start collision

* commit '26cc6b41':
  Fix for AV lockup on local and remote start collision
parents 0b5e3fcc 26cc6b41
Loading
Loading
Loading
Loading
+5 −3
Original line number Original line 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)
        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;
            p_scb->wait &= ~BTA_AV_WAIT_ROLE_SW_BITS;
            if (p_data->role_res.hci_status != HCI_SUCCESS)
            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);
                bta_sys_idle(BTA_ID_AV, bta_av_cb.audio_open_cnt, p_scb->peer_addr);
                /* start failed because of role switch. */
                /* start failed because of role switch. */
                start.chnl   = p_scb->chnl;
                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);
        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);
           bta_av_start_ok(p_scb, NULL);
    }
    }
    APPL_TRACE_DEBUG2("started %d role:x%x", p_scb->started, p_scb->role);
    APPL_TRACE_DEBUG2("started %d role:x%x", p_scb->started, p_scb->role);
+1 −1
Original line number Original line 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",
            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);
                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))
            if ((p_av->start.status == BTA_SUCCESS) && (p_av->start.suspending == TRUE))
                return TRUE;
                return TRUE;


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


            /* remain in open state if status failed */
            /* remain in open state if status failed */