Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(552)

Unified Diff: webkit/renderer/compositor_bindings/web_external_texture_layer_impl.cc

Issue 23648014: cc: Move TextureMailbox::ReleaseCallback to SingleReleaseCallback. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: releasecallback: dchecks Created 7 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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 36b4994ef625439541019249dd537b1049c25e6a..658d98c0dccb1759d61860d7af6229440bde5c20 100644
--- a/webkit/renderer/compositor_bindings/web_external_texture_layer_impl.cc
+++ b/webkit/renderer/compositor_bindings/web_external_texture_layer_impl.cc
@@ -6,6 +6,8 @@
#include "cc/layers/texture_layer.h"
#include "cc/resources/resource_update_queue.h"
+#include "cc/resources/scoped_release_callback.h"
+#include "cc/resources/texture_mailbox.h"
#include "third_party/WebKit/public/platform/WebExternalTextureLayerClient.h"
#include "third_party/WebKit/public/platform/WebExternalTextureMailbox.h"
#include "third_party/WebKit/public/platform/WebFloatRect.h"
@@ -36,7 +38,8 @@ WebKit::WebLayer* WebExternalTextureLayerImpl::layer() { return layer_.get(); }
void WebExternalTextureLayerImpl::clearTexture() {
TextureLayer *layer = static_cast<TextureLayer*>(layer_->layer());
layer->WillModifyTexture();
- layer->SetTextureMailbox(cc::TextureMailbox());
+ layer->SetTextureMailbox(cc::TextureMailbox(),
+ scoped_ptr<cc::ScopedReleaseCallback>());
}
void WebExternalTextureLayerImpl::setOpaque(bool opaque) {
@@ -69,6 +72,7 @@ WebKit::WebGraphicsContext3D* WebExternalTextureLayerImpl::Context3d() {
bool WebExternalTextureLayerImpl::PrepareTextureMailbox(
cc::TextureMailbox* mailbox,
+ scoped_ptr<cc::ScopedReleaseCallback>* release_callback,
bool use_shared_memory) {
WebKit::WebExternalTextureMailbox client_mailbox;
WebExternalBitmapImpl* bitmap = NULL;
@@ -82,17 +86,17 @@ bool WebExternalTextureLayerImpl::PrepareTextureMailbox(
}
gpu::Mailbox name;
name.SetName(client_mailbox.name);
- cc::TextureMailbox::ReleaseCallback callback =
- base::Bind(&WebExternalTextureLayerImpl::DidReleaseMailbox,
- this->AsWeakPtr(),
- client_mailbox,
- bitmap);
- if (bitmap) {
- *mailbox =
- cc::TextureMailbox(bitmap->shared_memory(), bitmap->size(), callback);
- } else {
- *mailbox = cc::TextureMailbox(name, callback, client_mailbox.syncPoint);
- }
+ scoped_ptr<cc::ScopedReleaseCallback> callback =
+ cc::ScopedReleaseCallback::Create(base::Bind(
+ &WebExternalTextureLayerImpl::DidReleaseMailbox,
+ this->AsWeakPtr(),
+ client_mailbox,
+ bitmap));
+ if (bitmap)
+ *mailbox = cc::TextureMailbox(bitmap->shared_memory(), bitmap->size());
+ else
+ *mailbox = cc::TextureMailbox(name, client_mailbox.syncPoint);
+ *release_callback = callback.Pass();
return true;
}

Powered by Google App Engine
This is Rietveld 408576698