Index: webkit/renderer/compositor_bindings/web_external_texture_layer_impl.cc |
diff --git a/webkit/renderer/compositor_bindings/web_external_texture_layer_impl.cc b/webkit/renderer/compositor_bindings/web_external_texture_layer_impl.cc |
index e198d22af9132192a27aac2a97820643b9aad689..04179cd517145112c0fe9ac0354de545bc509d47 100644 |
--- a/webkit/renderer/compositor_bindings/web_external_texture_layer_impl.cc |
+++ b/webkit/renderer/compositor_bindings/web_external_texture_layer_impl.cc |
@@ -110,16 +110,24 @@ WebKit::WebGraphicsContext3D* WebExternalTextureLayerImpl::Context3d() { |
bool WebExternalTextureLayerImpl::PrepareTextureMailbox( |
cc::TextureMailbox* mailbox) { |
WebKit::WebExternalTextureMailbox client_mailbox; |
- if (!client_->prepareMailbox(&client_mailbox)) { |
+ bool use_bitmap = |
+ static_cast<TextureLayer*>(layer_->layer())->MustUseBitmap(); |
+ if (!client_->prepareMailbox(&client_mailbox, use_bitmap)) { |
return false; |
} |
+ |
gpu::Mailbox name; |
name.SetName(client_mailbox.name); |
cc::TextureMailbox::ReleaseCallback callback = |
base::Bind(&WebExternalTextureLayerImpl::DidReleaseMailbox, |
this->AsWeakPtr(), |
client_mailbox); |
- *mailbox = cc::TextureMailbox(name, callback, client_mailbox.syncPoint); |
+ if (use_bitmap) |
+ *mailbox = cc::TextureMailbox(client_mailbox.bitmap, |
+ client_mailbox.size, |
+ callback); |
+ else |
+ *mailbox = cc::TextureMailbox(name, callback, client_mailbox.syncPoint); |
return true; |
} |
@@ -133,6 +141,8 @@ void WebExternalTextureLayerImpl::DidReleaseMailbox( |
WebKit::WebExternalTextureMailbox available_mailbox; |
memcpy(available_mailbox.name, mailbox.name, sizeof(available_mailbox.name)); |
available_mailbox.syncPoint = sync_point; |
+ available_mailbox.bitmap = mailbox.bitmap; |
+ available_mailbox.size = mailbox.size; |
client_->mailboxReleased(available_mailbox); |
} |