Index: media/blink/webaudiosourceprovider_impl.cc |
diff --git a/media/blink/webaudiosourceprovider_impl.cc b/media/blink/webaudiosourceprovider_impl.cc |
index 3f052dbeb6f5a8f9759964cb534635f5e19ebd79..31bb5aa11b69a46ee5fe1507fd9290907117c65b 100644 |
--- a/media/blink/webaudiosourceprovider_impl.cc |
+++ b/media/blink/webaudiosourceprovider_impl.cc |
@@ -233,6 +233,10 @@ void WebAudioSourceProviderImpl::Initialize(const AudioParameters& params, |
void WebAudioSourceProviderImpl::SetCopyAudioCallback( |
const CopyAudioCB& callback) { |
DCHECK(!callback.is_null()); |
+ |
+ // Use |sink_lock_| to protect |tee_filter_| too since they go in lockstep. |
+ base::AutoLock auto_lock(sink_lock_); |
+ |
DCHECK(tee_filter_); |
tee_filter_->set_copy_audio_bus_callback(callback); |
} |
@@ -242,6 +246,10 @@ void WebAudioSourceProviderImpl::ClearCopyAudioCallback() { |
tee_filter_->set_copy_audio_bus_callback(CopyAudioCB()); |
} |
+int WebAudioSourceProviderImpl::RenderForTesting(AudioBus* audio_bus) { |
+ return tee_filter_->Render(audio_bus, 0, 0); |
+} |
+ |
void WebAudioSourceProviderImpl::OnSetFormat() { |
base::AutoLock auto_lock(sink_lock_); |
if (!client_) |
@@ -251,10 +259,6 @@ void WebAudioSourceProviderImpl::OnSetFormat() { |
client_->setFormat(tee_filter_->channels(), tee_filter_->sample_rate()); |
} |
-int WebAudioSourceProviderImpl::RenderForTesting(AudioBus* audio_bus) { |
- return tee_filter_->Render(audio_bus, 0, 0); |
-} |
- |
int WebAudioSourceProviderImpl::TeeFilter::Render(AudioBus* audio_bus, |
uint32_t delay_milliseconds, |
uint32_t frames_skipped) { |