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

Unified Diff: cc/blink/web_external_texture_layer_impl.cc

Issue 2261623002: Make DrawingBuffer and Canvas2DLayerBridge be cc::TextureLayerClients. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: webmailbox: fix-passrefptr Created 4 years, 4 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
« no previous file with comments | « cc/blink/web_external_texture_layer_impl.h ('k') | components/test_runner/test_plugin.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: cc/blink/web_external_texture_layer_impl.cc
diff --git a/cc/blink/web_external_texture_layer_impl.cc b/cc/blink/web_external_texture_layer_impl.cc
index 2eef8658361ce36e26bad09113ed390b5d4ac225..afa81ca7f158761ab069c5397faff41cdabf4f01 100644
--- a/cc/blink/web_external_texture_layer_impl.cc
+++ b/cc/blink/web_external_texture_layer_impl.cc
@@ -4,27 +4,16 @@
#include "cc/blink/web_external_texture_layer_impl.h"
-#include "base/memory/ptr_util.h"
-#include "cc/blink/web_external_bitmap_impl.h"
#include "cc/blink/web_layer_impl.h"
#include "cc/layers/texture_layer.h"
-#include "cc/resources/single_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"
-#include "third_party/WebKit/public/platform/WebSize.h"
-#include "third_party/khronos/GLES2/gl2.h"
using cc::TextureLayer;
namespace cc_blink {
WebExternalTextureLayerImpl::WebExternalTextureLayerImpl(
- blink::WebExternalTextureLayerClient* client)
- : client_(client) {
- cc::TextureLayerClient* cc_client = client_ ? this : nullptr;
- scoped_refptr<TextureLayer> layer = TextureLayer::CreateForMailbox(cc_client);
+ cc::TextureLayerClient* client) {
+ scoped_refptr<TextureLayer> layer = TextureLayer::CreateForMailbox(client);
layer->SetIsDrawable(true);
layer_.reset(new WebLayerImpl(layer));
}
@@ -61,81 +50,4 @@ void WebExternalTextureLayerImpl::setNearestNeighbor(bool nearest_neighbor) {
->SetNearestNeighbor(nearest_neighbor);
}
-bool WebExternalTextureLayerImpl::PrepareTextureMailbox(
- cc::TextureMailbox* mailbox,
- std::unique_ptr<cc::SingleReleaseCallback>* release_callback,
- bool use_shared_memory) {
- blink::WebExternalTextureMailbox client_mailbox;
- WebExternalBitmapImpl* bitmap = nullptr;
-
- if (use_shared_memory)
- bitmap = AllocateBitmap();
- if (!client_->prepareMailbox(&client_mailbox, bitmap)) {
- if (bitmap)
- free_bitmaps_.push_back(base::WrapUnique(bitmap));
- return false;
- }
- gpu::Mailbox name;
- name.SetName(client_mailbox.name);
- if (bitmap) {
- *mailbox = cc::TextureMailbox(bitmap->shared_bitmap(), bitmap->size());
- } else {
- gpu::SyncToken sync_token;
- static_assert(sizeof(sync_token) <= sizeof(client_mailbox.syncToken),
- "Size of web external sync token too small.");
- if (client_mailbox.validSyncToken)
- memcpy(&sync_token, client_mailbox.syncToken, sizeof(sync_token));
-
- gfx::Size size;
- if (client_mailbox.allowOverlay) {
- size = gfx::Size(client_mailbox.textureSize.width,
- client_mailbox.textureSize.height);
- }
-
- *mailbox = cc::TextureMailbox(
- name, sync_token, client_mailbox.textureTarget, size,
- client_mailbox.allowOverlay, false);
- }
- mailbox->set_nearest_neighbor(client_mailbox.nearestNeighbor);
-
- if (mailbox->IsValid()) {
- *release_callback = cc::SingleReleaseCallback::Create(
- base::Bind(&WebExternalTextureLayerImpl::DidReleaseMailbox,
- this->AsWeakPtr(),
- client_mailbox,
- bitmap));
- }
-
- return true;
-}
-
-WebExternalBitmapImpl* WebExternalTextureLayerImpl::AllocateBitmap() {
- if (!free_bitmaps_.empty()) {
- WebExternalBitmapImpl* result = free_bitmaps_.back().release();
- free_bitmaps_.pop_back();
- return result;
- }
- return new WebExternalBitmapImpl;
-}
-
-// static
-void WebExternalTextureLayerImpl::DidReleaseMailbox(
- base::WeakPtr<WebExternalTextureLayerImpl> layer,
- const blink::WebExternalTextureMailbox& mailbox,
- WebExternalBitmapImpl* bitmap,
- const gpu::SyncToken& sync_token,
- bool lost_resource) {
- DCHECK(layer);
- blink::WebExternalTextureMailbox available_mailbox;
- static_assert(sizeof(sync_token) <= sizeof(available_mailbox.syncToken),
- "Size of web external sync token too small.");
- memcpy(available_mailbox.name, mailbox.name, sizeof(available_mailbox.name));
- memcpy(available_mailbox.syncToken, sync_token.GetConstData(),
- sizeof(sync_token));
- available_mailbox.validSyncToken = sync_token.HasData();
- if (bitmap)
- layer->free_bitmaps_.push_back(base::WrapUnique(bitmap));
- layer->client_->mailboxReleased(available_mailbox, lost_resource);
-}
-
} // namespace cc_blink
« no previous file with comments | « cc/blink/web_external_texture_layer_impl.h ('k') | components/test_runner/test_plugin.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698