Bug 1309516 part 0 - make sure that the VideoSink::Redraw() always draws something; r?jwwang
MozReview-Commit-ID: BQ0FDyNPuri
--- a/dom/media/mediasink/VideoSink.cpp
+++ b/dom/media/mediasink/VideoSink.cpp
@@ -284,18 +284,20 @@ VideoSink::Redraw(const VideoInfo& aInfo
{
AssertOwnerThread();
// No video track, nothing to draw.
if (!aInfo.IsValid() || !mContainer) {
return;
}
- if (VideoQueue().GetSize() > 0) {
- RenderVideoFrames(1);
+ RefPtr<MediaData> frame = VideoQueue().PeekFront();
+ if (frame) {
+ VideoData* video = frame->As<VideoData>();
+ mContainer->SetCurrentFrame(video->mDisplay, video->mImage, TimeStamp::Now());
return;
}
// When we reach here, it means there are no frames in this video track.
// Draw a blank frame to ensure there is something in the image container
// to fire 'loadeddata'.
RefPtr<Image> blank =
mContainer->GetImageContainer()->CreatePlanarYCbCrImage();