From 424694ce7900e461867d2c6c2913197a2cba7a4c Mon Sep 17 00:00:00 2001 From: Bjorn Volcker Date: Fri, 27 Mar 2015 11:30:43 +0100 Subject: [PATCH] audio_processing/agc: Put entire method set_output_will_be_muted() under lock Setting the member value output_will_be_muted_ in set_output_will_be_muted() was done before the lock. This caused a data race. BUG=4477 R=pbos@webrtc.org Review URL: https://webrtc-codereview.appspot.com/44929004 Cr-Commit-Position: refs/heads/master@{#8877} --- webrtc/modules/audio_processing/audio_processing_impl.cc | 3 ++- webrtc/modules/audio_processing/audio_processing_impl.h | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/webrtc/modules/audio_processing/audio_processing_impl.cc b/webrtc/modules/audio_processing/audio_processing_impl.cc index eeb9a79615..1074b61828 100644 --- a/webrtc/modules/audio_processing/audio_processing_impl.cc +++ b/webrtc/modules/audio_processing/audio_processing_impl.cc @@ -452,14 +452,15 @@ int AudioProcessingImpl::num_output_channels() const { } void AudioProcessingImpl::set_output_will_be_muted(bool muted) { - output_will_be_muted_ = muted; CriticalSectionScoped lock(crit_); + output_will_be_muted_ = muted; if (agc_manager_.get()) { agc_manager_->SetCaptureMuted(output_will_be_muted_); } } bool AudioProcessingImpl::output_will_be_muted() const { + CriticalSectionScoped lock(crit_); return output_will_be_muted_; } diff --git a/webrtc/modules/audio_processing/audio_processing_impl.h b/webrtc/modules/audio_processing/audio_processing_impl.h index 765cde7fe1..500f08e82f 100644 --- a/webrtc/modules/audio_processing/audio_processing_impl.h +++ b/webrtc/modules/audio_processing/audio_processing_impl.h @@ -210,7 +210,7 @@ class AudioProcessingImpl : public AudioProcessing { int delay_offset_ms_; bool was_stream_delay_set_; - bool output_will_be_muted_; + bool output_will_be_muted_ GUARDED_BY(crit_); bool key_pressed_;