diff --git a/system/bta/ag/bta_ag_sco.cc b/system/bta/ag/bta_ag_sco.cc index 148919d9467e23bba53edf5a4a1e0643ce7939c5..1ff4c7eed9339d40ad52a87276691d5f17f9d911 100644 --- a/system/bta/ag/bta_ag_sco.cc +++ b/system/bta/ag/bta_ag_sco.cc @@ -370,6 +370,12 @@ static void bta_ag_create_sco(tBTA_AG_SCB* p_scb, bool is_orig) { if (!bta_ag_sco_is_active_device(p_scb->peer_addr)) { LOG(WARNING) << __func__ << ": device " << p_scb->peer_addr << " is not active, active_device=" << active_device_addr; + if (bta_ag_cb.sco.p_curr_scb != nullptr && + bta_ag_cb.sco.p_curr_scb->in_use && p_scb == bta_ag_cb.sco.p_curr_scb) { + do_in_bta_thread( + FROM_HERE, base::Bind(&bta_ag_sm_execute, p_scb, BTA_AG_SCO_CLOSE_EVT, + tBTA_AG_DATA::kEmpty)); + } return; } /* Make sure this SCO handle is not already in use */ diff --git a/system/btif/src/btif_hf.cc b/system/btif/src/btif_hf.cc index 80cf4d48345385141104e663eae48d76f43c729c..038af2ed1ddafb416881a8d8fcbed7670eaa500f 100644 --- a/system/btif/src/btif_hf.cc +++ b/system/btif/src/btif_hf.cc @@ -773,14 +773,12 @@ bt_status_t HeadsetInterface::ConnectAudio(RawAddress* bd_addr) { LOG(ERROR) << ": SLC not connected for " << *bd_addr; return BT_STATUS_NOT_READY; } - BTA_AgAudioOpen(btif_hf_cb[idx].handle); - // Inform the application that the audio connection has been initiated - // successfully do_in_jni_thread(base::Bind(&Callbacks::AudioStateCallback, // Manual pointer management for now base::Unretained(bt_hf_callbacks), BTHF_AUDIO_STATE_CONNECTING, &btif_hf_cb[idx].connected_bda)); + BTA_AgAudioOpen(btif_hf_cb[idx].handle); return BT_STATUS_SUCCESS; }