diff --git a/sdk/objc/Framework/Native/src/audio/audio_device_ios.mm b/sdk/objc/Framework/Native/src/audio/audio_device_ios.mm index dfa4deae8d..053ffdb3fd 100644 --- a/sdk/objc/Framework/Native/src/audio/audio_device_ios.mm +++ b/sdk/objc/Framework/Native/src/audio/audio_device_ios.mm @@ -122,10 +122,10 @@ AudioDeviceIOS::AudioDeviceIOS() } AudioDeviceIOS::~AudioDeviceIOS() { - LOGI() << "~dtor" << ios::GetCurrentThreadDescription(); - audio_session_observer_ = nil; RTC_DCHECK(thread_checker_.CalledOnValidThread()); + LOGI() << "~dtor" << ios::GetCurrentThreadDescription(); Terminate(); + audio_session_observer_ = nil; } void AudioDeviceIOS::AttachAudioBuffer(AudioDeviceBuffer* audioBuffer) { @@ -835,6 +835,7 @@ void AudioDeviceIOS::UnconfigureAudioSession() { RTCAudioSession* session = [RTCAudioSession sharedInstance]; [session lockForConfiguration]; [session unconfigureWebRTCSession:nil]; + [session endWebRTCSession:nil]; [session unlockForConfiguration]; has_configured_session_ = false; RTCLog(@"Unconfigured audio session."); @@ -902,10 +903,7 @@ void AudioDeviceIOS::ShutdownPlayOrRecord() { // All I/O should be stopped or paused prior to deactivating the audio // session, hence we deactivate as last action. - [session lockForConfiguration]; UnconfigureAudioSession(); - [session endWebRTCSession:nil]; - [session unlockForConfiguration]; } void AudioDeviceIOS::PrepareForNewStart() {