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

Commit 417d74ae authored by Ayan Ghosh's avatar Ayan Ghosh Committed by android-build-merger
Browse files

Proper handling of AV connection collision

am: 26a36f75

Change-Id: I2e6ad58ff61b95d3c6460d169e24702213bd31d5
parents bb2923c2 26a36f75
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -1567,7 +1567,10 @@ void bta_av_connect_req(tBTA_AV_SCB *p_scb, tBTA_AV_DATA *p_data)
    {
        /* SNK initiated L2C connection while SRC was doing SDP.    */
        /* Wait until timeout to check if SNK starts signalling.    */
        APPL_TRACE_EVENT("bta_av_connect_req: coll_mask = 0x%2X", p_scb->coll_mask);
        APPL_TRACE_EVENT("%s: coll_mask = 0x%2X", __func__, p_scb->coll_mask);
        p_scb->coll_mask |= BTA_AV_COLL_API_CALLED;
        APPL_TRACE_EVENT("%s: updated coll_mask = 0x%2X", __func__,
                         p_scb->coll_mask);
        return;
    }

+3 −0
Original line number Diff line number Diff line
@@ -1613,6 +1613,8 @@ static void bta_av_accept_signalling_timer_cback(void *data)

            if (bta_av_is_scb_opening(p_scb))
            {
                APPL_TRACE_DEBUG("%s: stream state opening: SDP started = %d",
                                 __func__, p_scb->sdp_discovery_started);
                if (p_scb->sdp_discovery_started)
                {
                    /* We are still doing SDP. Run the timer again. */
@@ -1634,6 +1636,7 @@ static void bta_av_accept_signalling_timer_cback(void *data)
            {
                /* Stay in incoming state if SNK does not start signalling */

                APPL_TRACE_DEBUG("%s: stream state incoming", __func__);
                /* API open was called right after SNK opened L2C connection. */
                if (p_scb->coll_mask & BTA_AV_COLL_API_CALLED)
                {
+9 −1
Original line number Diff line number Diff line
@@ -1044,13 +1044,21 @@ static BOOLEAN btif_av_state_started_handler(btif_sm_event_t event, void *p_data

static void btif_av_handle_event(UINT16 event, char* p_param)
{
    BTIF_TRACE_EVENT("%s event:%s", __func__,
                     dump_av_sm_event_name((btif_av_sm_event_t)event));
    switch(event)
    {
        case BTIF_AV_CLEANUP_REQ_EVT:
            BTIF_TRACE_EVENT("%s: BTIF_AV_CLEANUP_REQ_EVT", __FUNCTION__);
            btif_a2dp_stop_media_task();
            break;

        case BTA_AV_REGISTER_EVT:
            if (btif_av_cb.sm_handle == NULL)
            {
                btif_av_cb.bta_handle = ((tBTA_AV*)p_param)->registr.hndl;
                BTIF_TRACE_DEBUG("%s: BTA AV Handle updated", __func__);
            }
            /* FALLTHROUGH */
        default:
            btif_sm_dispatch(btif_av_cb.sm_handle, event, (void*)p_param);
            btif_av_event_free_data(event, p_param);