summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--media/renderers/video_renderer_impl.cc10
-rw-r--r--media/renderers/video_renderer_impl_unittest.cc2
2 files changed, 9 insertions, 3 deletions
diff --git a/media/renderers/video_renderer_impl.cc b/media/renderers/video_renderer_impl.cc
index e73b878..c586ab2 100644
--- a/media/renderers/video_renderer_impl.cc
+++ b/media/renderers/video_renderer_impl.cc
@@ -391,10 +391,14 @@ void VideoRendererImpl::OnTimeStateChanged(bool time_progressing) {
if (!use_new_video_renderering_path_ || sink_started_ == time_progressing_)
return;
- if (time_progressing_)
- StartSink();
- else
+ if (time_progressing_) {
+ // If only an EOS frame came in after a seek, the renderer may not have
+ // received the ended event yet though we've posted it.
+ if (!rendered_end_of_stream_)
+ StartSink();
+ } else {
StopSink();
+ }
}
void VideoRendererImpl::PaintNextReadyFrame_Locked() {
diff --git a/media/renderers/video_renderer_impl_unittest.cc b/media/renderers/video_renderer_impl_unittest.cc
index b139c30..c77fc74 100644
--- a/media/renderers/video_renderer_impl_unittest.cc
+++ b/media/renderers/video_renderer_impl_unittest.cc
@@ -386,6 +386,8 @@ TEST_P(VideoRendererImplTest, InitializeAndEndOfStream) {
SatisfyPendingReadWithEndOfStream();
event.RunAndWait();
}
+ // Firing a time state changed to true should be ignored...
+ renderer_->OnTimeStateChanged(true);
EXPECT_FALSE(null_video_sink_->is_started());
Destroy();
}