| Index: content/renderer/media/webrtc_audio_renderer.cc
|
| diff --git a/content/renderer/media/webrtc_audio_renderer.cc b/content/renderer/media/webrtc_audio_renderer.cc
|
| index 467cbe35f74daf8e6459575f096488f78c166f62..c41b69fd56269fc9483a76a0a243c99fe83ae048 100644
|
| --- a/content/renderer/media/webrtc_audio_renderer.cc
|
| +++ b/content/renderer/media/webrtc_audio_renderer.cc
|
| @@ -302,15 +302,6 @@ void WebRtcAudioRenderer::EnterPauseState() {
|
| void WebRtcAudioRenderer::Stop() {
|
| DVLOG(1) << "WebRtcAudioRenderer::Stop()";
|
| DCHECK(thread_checker_.CalledOnValidThread());
|
| - // If |max_render_time_| is zero, no render call has been made.
|
| - if (!max_render_time_.is_zero()) {
|
| - UMA_HISTOGRAM_CUSTOM_COUNTS(
|
| - "Media.Audio.Render.GetSourceDataTimeMax.WebRTC",
|
| - max_render_time_.InMicroseconds(), kRenderTimeHistogramMinMicroseconds,
|
| - kRenderTimeHistogramMaxMicroseconds, 50);
|
| - max_render_time_ = base::TimeDelta();
|
| - }
|
| -
|
| {
|
| base::AutoLock auto_lock(lock_);
|
| if (state_ == UNINITIALIZED)
|
| @@ -326,6 +317,19 @@ void WebRtcAudioRenderer::Stop() {
|
| state_ = UNINITIALIZED;
|
| }
|
|
|
| + // Apart from here, |max_render_time_| is only accessed in SourceCallback(),
|
| + // which is guaranteed to not run after |source_| has been set to null, and
|
| + // not before this function has returned.
|
| + // If |max_render_time_| is zero, no render call has been made.
|
| + if (!max_render_time_.is_zero()) {
|
| + UMA_HISTOGRAM_CUSTOM_COUNTS(
|
| + "Media.Audio.Render.GetSourceDataTimeMax.WebRTC",
|
| + max_render_time_.InMicroseconds(),
|
| + kRenderTimeHistogramMinMicroseconds,
|
| + kRenderTimeHistogramMaxMicroseconds, 50);
|
| + max_render_time_ = base::TimeDelta();
|
| + }
|
| +
|
| // Make sure to stop the sink while _not_ holding the lock since the Render()
|
| // callback may currently be executing and trying to grab the lock while we're
|
| // stopping the thread on which it runs.
|
|
|