Index: content/renderer/media/webrtc_audio_device_impl.cc |
diff --git a/content/renderer/media/webrtc_audio_device_impl.cc b/content/renderer/media/webrtc_audio_device_impl.cc |
index aca12bdb82ddbd75cd7e6881f2f47149eb8429be..c0bc6dd0daa777d833880dca159eac2e905d038c 100644 |
--- a/content/renderer/media/webrtc_audio_device_impl.cc |
+++ b/content/renderer/media/webrtc_audio_device_impl.cc |
@@ -248,7 +248,16 @@ int32_t WebRtcAudioDeviceImpl::Terminate() { |
DisableAecDump(); |
- capturers_.clear(); |
+ // Stop all the capturers to ensure no further OnData() and |
+ // RemoveAudioCapturer() callback. |
+ // Cache the capturers in a local list since WebRtcAudioCapturer::Stop() |
+ // will trigger RemoveAudioCapturer() callback. |
+ CapturerList capturers; |
+ capturers.swap(capturers_); |
+ for (CapturerList::const_iterator iter = capturers.begin(); |
+ iter != capturers.end(); ++iter) { |
+ (*iter)->Stop(); |
+ } |
initialized_ = false; |
return 0; |