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

Unified Diff: content/renderer/pepper/pepper_plugin_instance_impl.cc

Issue 1964793002: Revert of [Reland 1] Pepper takes ownership of a mailbox before passing it to the texture layer. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 7 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: 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 cf7521b980d81209455ebec1449ae88a347cadd0..17925e9d2383f1e48448b015dbaa87315196fc16 100644
--- a/content/renderer/pepper/pepper_plugin_instance_impl.cc
+++ b/content/renderer/pepper/pepper_plugin_instance_impl.cc
@@ -781,58 +781,20 @@
}
}
-void PepperPluginInstanceImpl::CommitTextureMailbox(
- const cc::TextureMailbox& texture_mailbox) {
- if (committed_texture_.IsValid() && !IsTextureInUse(committed_texture_)) {
- bound_graphics_3d_->ReturnFrontBuffer(
- committed_texture_.mailbox(), committed_texture_consumed_sync_token_,
- false);
- }
-
- committed_texture_ = texture_mailbox;
- committed_texture_consumed_sync_token_ = gpu::SyncToken();
-
+void PepperPluginInstanceImpl::CommitBackingTexture() {
if (!texture_layer_) {
UpdateLayer(true);
return;
}
- PassCommittedTextureToTextureLayer();
+ gpu::Mailbox mailbox;
+ gpu::SyncToken sync_token;
+ bound_graphics_3d_->GetBackingMailbox(&mailbox, &sync_token);
+ DCHECK(!mailbox.IsZero());
+ DCHECK(sync_token.HasData());
+ texture_layer_->SetTextureMailboxWithoutReleaseCallback(
+ cc::TextureMailbox(mailbox, sync_token, GL_TEXTURE_2D));
texture_layer_->SetNeedsDisplay();
-}
-
-void PepperPluginInstanceImpl::PassCommittedTextureToTextureLayer() {
- DCHECK(bound_graphics_3d_);
-
- if (!committed_texture_.IsValid())
- return;
-
- std::unique_ptr<cc::SingleReleaseCallback> callback(
- cc::SingleReleaseCallback::Create(base::Bind(
- &PepperPluginInstanceImpl::FinishedConsumingCommittedTexture,
- weak_factory_.GetWeakPtr(), committed_texture_)));
-
- IncrementTextureReferenceCount(committed_texture_);
- texture_layer_->SetTextureMailbox(committed_texture_, std::move(callback));
-}
-
-void PepperPluginInstanceImpl::FinishedConsumingCommittedTexture(
- const cc::TextureMailbox& texture_mailbox,
- const gpu::SyncToken& sync_token,
- bool is_lost) {
- bool removed = DecrementTextureReferenceCount(texture_mailbox);
- bool is_committed_texture =
- committed_texture_.mailbox() == texture_mailbox.mailbox();
-
- if (is_committed_texture && !is_lost) {
- committed_texture_consumed_sync_token_ = sync_token;
- return;
- }
-
- if (removed && !is_committed_texture) {
- bound_graphics_3d_->ReturnFrontBuffer(texture_mailbox.mailbox(), sync_token,
- is_lost);
- }
}
void PepperPluginInstanceImpl::InstanceCrashed() {
@@ -2055,7 +2017,12 @@
if (!container_)
return;
- bool want_3d_layer = !!bound_graphics_3d_.get();
+ 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_2d_layer = !!bound_graphics_2d_platform_;
bool want_texture_layer = want_3d_layer || want_2d_layer;
bool want_compositor_layer = !!bound_compositor_;
@@ -2094,8 +2061,8 @@
DCHECK(bound_graphics_3d_.get());
texture_layer_ = cc::TextureLayer::CreateForMailbox(NULL);
opaque = bound_graphics_3d_->IsOpaque();
-
- PassCommittedTextureToTextureLayer();
+ texture_layer_->SetTextureMailboxWithoutReleaseCallback(
+ cc::TextureMailbox(mailbox, sync_token, GL_TEXTURE_2D));
} else {
DCHECK(bound_graphics_2d_platform_);
texture_layer_ = cc::TextureLayer::CreateForMailbox(this);
@@ -3386,47 +3353,4 @@
rect->set_height(rect->height() / viewport_to_dip_scale_);
}
-void PepperPluginInstanceImpl::IncrementTextureReferenceCount(
- const cc::TextureMailbox& mailbox) {
- auto it =
- std::find_if(texture_ref_counts_.begin(), texture_ref_counts_.end(),
- [&mailbox](const TextureMailboxRefCount& ref_count) {
- return ref_count.first.mailbox() == mailbox.mailbox();
- });
- if (it == texture_ref_counts_.end()) {
- texture_ref_counts_.push_back(std::make_pair(mailbox, 1));
- return;
- }
-
- it->second++;
-}
-
-bool PepperPluginInstanceImpl::DecrementTextureReferenceCount(
- const cc::TextureMailbox& mailbox) {
- auto it =
- std::find_if(texture_ref_counts_.begin(), texture_ref_counts_.end(),
- [&mailbox](const TextureMailboxRefCount& ref_count) {
- return ref_count.first.mailbox() == mailbox.mailbox();
- });
- DCHECK(it != texture_ref_counts_.end());
-
- if (it->second == 1) {
- texture_ref_counts_.erase(it);
- return true;
- }
-
- it->second--;
- return false;
-}
-
-bool PepperPluginInstanceImpl::IsTextureInUse(
- const cc::TextureMailbox& mailbox) const {
- auto it =
- std::find_if(texture_ref_counts_.begin(), texture_ref_counts_.end(),
- [&mailbox](const TextureMailboxRefCount& ref_count) {
- return ref_count.first.mailbox() == mailbox.mailbox();
- });
- return it != texture_ref_counts_.end();
-}
-
} // namespace content
« no previous file with comments | « content/renderer/pepper/pepper_plugin_instance_impl.h ('k') | content/renderer/pepper/ppb_graphics_3d_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698