BTAudio: report session ended after cleaning up

While Bluetooth stack ending a session, this CL does clean up first, and
then reports the change. All observers are able to get the correct
session state by invoking IsSessionReady() within the change callback.

Bug: 162065063
Test: manually
Change-Id: I920ea578d626d2e5844eb7c8a701636e20d7a219
This commit is contained in:
Cheney Ni
2020-07-24 09:54:51 +08:00
parent b278ae0c1e
commit 9dfdb686aa

View File

@@ -90,14 +90,16 @@ void BluetoothAudioSession::OnSessionStarted(
// bluetooth_audio outputs
void BluetoothAudioSession::OnSessionEnded() {
std::lock_guard<std::recursive_mutex> guard(mutex_);
if (IsSessionReady()) {
ReportSessionStatus();
}
bool toggled = IsSessionReady();
LOG(INFO) << __func__ << " - SessionType=" << toString(session_type_);
audio_config_ = (session_type_ == SessionType::A2DP_HARDWARE_OFFLOAD_DATAPATH
? kInvalidOffloadAudioConfiguration
: kInvalidSoftwareAudioConfiguration);
stack_iface_ = nullptr;
UpdateDataPath(nullptr);
if (toggled) {
ReportSessionStatus();
}
}
// invoking the registered session_changed_cb_