| Index: content/renderer/pepper/pepper_plugin_instance_impl.cc
|
| diff --git a/content/renderer/pepper/pepper_plugin_instance_impl.cc b/content/renderer/pepper/pepper_plugin_instance_impl.cc
|
| index 2168d5a885cc1a5e03fa39a777eb7f41aba0ae25..9c3ee3080a16ffb3e413508cb558118cb596bf58 100644
|
| --- a/content/renderer/pepper/pepper_plugin_instance_impl.cc
|
| +++ b/content/renderer/pepper/pepper_plugin_instance_impl.cc
|
| @@ -727,9 +727,20 @@ void PepperPluginInstanceImpl::ScrollRect(int dx,
|
| }
|
| }
|
|
|
| -void PepperPluginInstanceImpl::CommitBackingTexture() {
|
| - if (texture_layer_.get())
|
| - texture_layer_->SetNeedsDisplay();
|
| +static void IgnoreCallback(uint32, bool) {}
|
| +
|
| +void PepperPluginInstanceImpl::CommitBackingTexture(uint32 sync_point) {
|
| + if (!texture_layer_.get())
|
| + return;
|
| + gpu::Mailbox mailbox;
|
| + PlatformContext3D* context = bound_graphics_3d_->platform_context();
|
| + context->GetBackingMailbox(&mailbox, &sync_point);
|
| + DCHECK(!mailbox.IsZero());
|
| + DCHECK_NE(sync_point, 0u);
|
| + texture_layer_->SetTextureMailbox(
|
| + cc::TextureMailbox(mailbox, GL_TEXTURE_2D, sync_point),
|
| + cc::SingleReleaseCallback::Create(base::Bind(&IgnoreCallback)));
|
| + texture_layer_->SetNeedsDisplay();
|
| }
|
|
|
| void PepperPluginInstanceImpl::InstanceCrashed() {
|
| @@ -1916,16 +1927,16 @@ bool PepperPluginInstanceImpl::PrintPDFOutput(PP_Resource print_output,
|
| #endif
|
| }
|
|
|
| -static void IgnoreCallback(uint32, bool) {}
|
| -
|
| void PepperPluginInstanceImpl::UpdateLayer() {
|
| if (!container_)
|
| return;
|
|
|
| gpu::Mailbox mailbox;
|
| + uint32 sync_point = 0;
|
| if (bound_graphics_3d_.get()) {
|
| PlatformContext3D* context = bound_graphics_3d_->platform_context();
|
| - context->GetBackingMailbox(&mailbox);
|
| + context->GetBackingMailbox(&mailbox, &sync_point);
|
| + DCHECK_EQ(!mailbox.IsZero(), sync_point != 0);
|
| }
|
| bool want_3d_layer = !mailbox.IsZero();
|
| bool want_2d_layer = bound_graphics_2d_platform_ &&
|
| @@ -1956,7 +1967,7 @@ void PepperPluginInstanceImpl::UpdateLayer() {
|
| texture_layer_ = cc::TextureLayer::CreateForMailbox(NULL);
|
| opaque = bound_graphics_3d_->IsOpaque();
|
| texture_layer_->SetTextureMailbox(
|
| - cc::TextureMailbox(mailbox, GL_TEXTURE_2D, 0),
|
| + cc::TextureMailbox(mailbox, GL_TEXTURE_2D, sync_point),
|
| cc::SingleReleaseCallback::Create(base::Bind(&IgnoreCallback)));
|
| plugin_layer = texture_layer_;
|
| } else {
|
|
|