Index: media/filters/video_renderer_impl.cc |
diff --git a/media/filters/video_renderer_impl.cc b/media/filters/video_renderer_impl.cc |
index f315b717053521a2c113e75c1dc179900563f067..743fd1d87ce668cfe048d98b5e1dfb9ba4d77d45 100644 |
--- a/media/filters/video_renderer_impl.cc |
+++ b/media/filters/video_renderer_impl.cc |
@@ -202,7 +202,7 @@ void VideoRendererImpl::ThreadMain() { |
if (received_end_of_stream_) { |
if (!rendered_end_of_stream_) { |
rendered_end_of_stream_ = true; |
- ended_cb_.Run(); |
+ task_runner_->PostTask(FROM_HERE, ended_cb_); |
} |
} else { |
buffering_state_ = BUFFERING_HAVE_NOTHING; |
@@ -283,6 +283,7 @@ void VideoRendererImpl::DropNextReadyFrame_Locked() { |
void VideoRendererImpl::FrameReady(VideoFrameStream::Status status, |
const scoped_refptr<VideoFrame>& frame) { |
+ DCHECK(task_runner_->BelongsToCurrentThread()); |
base::AutoLock auto_lock(lock_); |
DCHECK_NE(state_, kUninitialized); |
DCHECK_NE(state_, kFlushed); |
@@ -344,6 +345,7 @@ bool VideoRendererImpl::HaveEnoughData_Locked() { |
} |
void VideoRendererImpl::TransitionToHaveEnough_Locked() { |
+ DCHECK(task_runner_->BelongsToCurrentThread()); |
DCHECK_EQ(buffering_state_, BUFFERING_HAVE_NOTHING); |
if (received_end_of_stream_) |
@@ -372,6 +374,7 @@ void VideoRendererImpl::TransitionToHaveEnough_Locked() { |
void VideoRendererImpl::AddReadyFrame_Locked( |
const scoped_refptr<VideoFrame>& frame) { |
+ DCHECK(task_runner_->BelongsToCurrentThread()); |
lock_.AssertAcquired(); |
DCHECK(!frame->end_of_stream()); |
@@ -454,7 +457,7 @@ void VideoRendererImpl::UpdateStatsAndWait_Locked( |
PipelineStatistics statistics; |
statistics.video_frames_decoded = frames_decoded_; |
statistics.video_frames_dropped = frames_dropped_; |
- statistics_cb_.Run(statistics); |
+ task_runner_->PostTask(FROM_HERE, base::Bind(statistics_cb_, statistics)); |
frames_decoded_ = 0; |
frames_dropped_ = 0; |