From 7a29426142dd5de1760eca156fbd3a3cbaf8cc9a Mon Sep 17 00:00:00 2001 From: Paulina Hensman Date: Thu, 28 Jun 2018 15:12:05 +0200 Subject: [PATCH] Detach audio devices from thread on terminate. To allow the AudioDeviceModule to be reinitialized on a different thread after termination, detach AudioDeviceModule and the input/output devices when Terminate is called. Also destroy the AudioDeviceBuffer. Bug: webrtc:7452 Change-Id: I50ef77c531f33d4efa0567d0475dd8280337bed9 Reviewed-on: https://webrtc-review.googlesource.com/86127 Reviewed-by: Magnus Jedvert Commit-Queue: Paulina Hensman Cr-Commit-Position: refs/heads/master@{#23784} --- sdk/android/src/jni/audio_device/audio_device_module.cc | 2 ++ sdk/android/src/jni/audio_device/audio_record_jni.cc | 1 + sdk/android/src/jni/audio_device/audio_track_jni.cc | 1 + 3 files changed, 4 insertions(+) diff --git a/sdk/android/src/jni/audio_device/audio_device_module.cc b/sdk/android/src/jni/audio_device/audio_device_module.cc index 196c65525a..6127ebe316 100644 --- a/sdk/android/src/jni/audio_device/audio_device_module.cc +++ b/sdk/android/src/jni/audio_device/audio_device_module.cc @@ -119,6 +119,8 @@ class AndroidAudioDeviceModule : public AudioDeviceModule { int32_t err = input_->Terminate(); err |= output_->Terminate(); initialized_ = false; + thread_checker_.DetachFromThread(); + audio_device_buffer_.reset(nullptr); RTC_DCHECK_EQ(err, 0); return err; } diff --git a/sdk/android/src/jni/audio_device/audio_record_jni.cc b/sdk/android/src/jni/audio_device/audio_record_jni.cc index dfe19558d9..50da3f7688 100644 --- a/sdk/android/src/jni/audio_device/audio_record_jni.cc +++ b/sdk/android/src/jni/audio_device/audio_record_jni.cc @@ -95,6 +95,7 @@ int32_t AudioRecordJni::Terminate() { RTC_LOG(INFO) << "Terminate"; RTC_DCHECK(thread_checker_.CalledOnValidThread()); StopRecording(); + thread_checker_.DetachFromThread(); return 0; } diff --git a/sdk/android/src/jni/audio_device/audio_track_jni.cc b/sdk/android/src/jni/audio_device/audio_track_jni.cc index 03959d615e..da3cedd4a6 100644 --- a/sdk/android/src/jni/audio_device/audio_track_jni.cc +++ b/sdk/android/src/jni/audio_device/audio_track_jni.cc @@ -69,6 +69,7 @@ int32_t AudioTrackJni::Terminate() { RTC_LOG(INFO) << "Terminate"; RTC_DCHECK(thread_checker_.CalledOnValidThread()); StopPlayout(); + thread_checker_.DetachFromThread(); return 0; }