| Index: content/renderer/media/webmediaplayer_impl.cc
|
| diff --git a/content/renderer/media/webmediaplayer_impl.cc b/content/renderer/media/webmediaplayer_impl.cc
|
| index 411b814757cd4c0f737f2fb995bd249ecee8962f..44afd0ad684e20eff508498fa13251f954453f88 100644
|
| --- a/content/renderer/media/webmediaplayer_impl.cc
|
| +++ b/content/renderer/media/webmediaplayer_impl.cc
|
| @@ -535,8 +535,21 @@ void WebMediaPlayerImpl::paint(WebCanvas* canvas,
|
|
|
| TRACE_EVENT0("media", "WebMediaPlayerImpl:paint");
|
| scoped_refptr<media::VideoFrame> video_frame = painter_.GetCurrentFrame(true);
|
| + if (video_frame &&
|
| + video_frame->format() == media::VideoFrame::NATIVE_TEXTURE) {
|
| + DCHECK(gpu_factories_);
|
| + gpu_factories_->WaitSyncPoint(video_frame->mailbox_holder()->sync_point);
|
| + }
|
| gfx::Rect gfx_rect(rect);
|
| skcanvas_video_renderer_.Paint(video_frame.get(), canvas, gfx_rect, alpha);
|
| + if (video_frame &&
|
| + video_frame->format() == media::VideoFrame::NATIVE_TEXTURE) {
|
| + DCHECK(gpu_factories_);
|
| + uint32 previous_sync_point =
|
| + video_frame->SwapReleaseSyncPoint(gpu_factories_->InsertSyncPoint());
|
| + if (previous_sync_point)
|
| + gpu_factories_->WaitSyncPoint(previous_sync_point);
|
| + }
|
| }
|
|
|
| bool WebMediaPlayerImpl::hasSingleSecurityOrigin() const {
|
| @@ -683,6 +696,10 @@ bool WebMediaPlayerImpl::copyVideoTextureToPlatformTexture(
|
| // The flush() operation is not necessary here. It is kept since the
|
| // performance will be better when it is added than not.
|
| web_graphics_context->flush();
|
| + uint32 previous_sync_point = video_frame->SwapReleaseSyncPoint(
|
| + web_graphics_context->insertSyncPoint());
|
| + if (previous_sync_point)
|
| + web_graphics_context->waitSyncPoint(previous_sync_point);
|
| return true;
|
| }
|
|
|
|
|