Index: webrtc/modules/audio_device/android/audio_device_template.h |
diff --git a/webrtc/modules/audio_device/android/audio_device_template.h b/webrtc/modules/audio_device/android/audio_device_template.h |
index adc66fa6d44d4caaa3d4ce907d26ca183f49e17d..653ff11d02f2098bde879e445cae2f57d6590765 100644 |
--- a/webrtc/modules/audio_device/android/audio_device_template.h |
+++ b/webrtc/modules/audio_device/android/audio_device_template.h |
@@ -60,15 +60,29 @@ class AudioDeviceTemplate : public AudioDeviceGeneric { |
int32_t Init() override { |
DCHECK(thread_checker_.CalledOnValidThread()); |
DCHECK(!initialized_); |
- initialized_ = audio_manager_->Init() || output_.Init() || input_.Init(); |
- return initialized_ ? 0 : -1; |
+ if (!audio_manager_->Init()) |
+ return -1; |
+ if (output_.Init() != 0) { |
+ audio_manager_->Close(); |
+ return -1; |
+ } |
+ if (input_.Init() != 0) { |
+ output_.Terminate(); |
+ audio_manager_->Close(); |
+ return -1; |
+ } |
+ initialized_ = true; |
+ return 0; |
} |
int32_t Terminate() override { |
DCHECK(thread_checker_.CalledOnValidThread()); |
- initialized_ = |
- !(output_.Terminate() || input_.Terminate() || audio_manager_->Close()); |
- return !initialized_ ? 0 : -1; |
+ int32_t err = input_.Terminate(); |
+ err |= output_.Terminate(); |
+ err |= !audio_manager_->Close(); |
+ initialized_ = false; |
+ DCHECK_EQ(err, 0); |
+ return err; |
} |
bool Initialized() const override { |