| 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 17925e9d2383f1e48448b015dbaa87315196fc16..05b07bfb8adae1c39224e4f25a9be32f2e404574 100644
|
| --- a/content/renderer/pepper/pepper_plugin_instance_impl.cc
|
| +++ b/content/renderer/pepper/pepper_plugin_instance_impl.cc
|
| @@ -787,14 +787,26 @@ void PepperPluginInstanceImpl::CommitBackingTexture() {
|
| return;
|
| }
|
|
|
| + PassTextureFromGraphics3DToTextureLayer();
|
| + texture_layer_->SetNeedsDisplay();
|
| +}
|
| +
|
| +void PepperPluginInstanceImpl::PassTextureFromGraphics3DToTextureLayer() {
|
| + DCHECK(bound_graphics_3d_);
|
| +
|
| gpu::Mailbox mailbox;
|
| gpu::SyncToken sync_token;
|
| - bound_graphics_3d_->GetBackingMailbox(&mailbox, &sync_token);
|
| + bound_graphics_3d_->TakeBackingMailbox(&mailbox, &sync_token);
|
| DCHECK(!mailbox.IsZero());
|
| DCHECK(sync_token.HasData());
|
| - texture_layer_->SetTextureMailboxWithoutReleaseCallback(
|
| - cc::TextureMailbox(mailbox, sync_token, GL_TEXTURE_2D));
|
| - texture_layer_->SetNeedsDisplay();
|
| +
|
| + cc::TextureMailbox texture_mailbox(mailbox, sync_token, GL_TEXTURE_2D);
|
| + std::unique_ptr<cc::SingleReleaseCallback> callback(
|
| + cc::SingleReleaseCallback::Create(
|
| + base::Bind(&PPB_Graphics3D_Impl::ReturnBackingMailbox,
|
| + bound_graphics_3d_, mailbox)));
|
| +
|
| + texture_layer_->SetTextureMailbox(texture_mailbox, std::move(callback));
|
| }
|
|
|
| void PepperPluginInstanceImpl::InstanceCrashed() {
|
| @@ -2017,12 +2029,7 @@ void PepperPluginInstanceImpl::UpdateLayer(bool force_creation) {
|
| if (!container_)
|
| return;
|
|
|
| - gpu::Mailbox mailbox;
|
| - gpu::SyncToken sync_token;
|
| - if (bound_graphics_3d_.get()) {
|
| - bound_graphics_3d_->GetBackingMailbox(&mailbox, &sync_token);
|
| - }
|
| - bool want_3d_layer = !mailbox.IsZero() && sync_token.HasData();
|
| + bool want_3d_layer = !!bound_graphics_3d_.get();
|
| bool want_2d_layer = !!bound_graphics_2d_platform_;
|
| bool want_texture_layer = want_3d_layer || want_2d_layer;
|
| bool want_compositor_layer = !!bound_compositor_;
|
| @@ -2061,8 +2068,8 @@ void PepperPluginInstanceImpl::UpdateLayer(bool force_creation) {
|
| DCHECK(bound_graphics_3d_.get());
|
| texture_layer_ = cc::TextureLayer::CreateForMailbox(NULL);
|
| opaque = bound_graphics_3d_->IsOpaque();
|
| - texture_layer_->SetTextureMailboxWithoutReleaseCallback(
|
| - cc::TextureMailbox(mailbox, sync_token, GL_TEXTURE_2D));
|
| +
|
| + PassTextureFromGraphics3DToTextureLayer();
|
| } else {
|
| DCHECK(bound_graphics_2d_platform_);
|
| texture_layer_ = cc::TextureLayer::CreateForMailbox(this);
|
|
|