| Index: cc/layers/texture_layer.cc
|
| diff --git a/cc/layers/texture_layer.cc b/cc/layers/texture_layer.cc
|
| index 4285ee0eb54caa4127ddbceb8f0e185c57a3c1b1..05391fe5d637bf8a93c2cd4ae8b1dac11ff643ac 100644
|
| --- a/cc/layers/texture_layer.cc
|
| +++ b/cc/layers/texture_layer.cc
|
| @@ -16,27 +16,20 @@
|
|
|
| namespace cc {
|
|
|
| -scoped_refptr<TextureLayer> TextureLayer::Create(TextureLayerClient* client) {
|
| - return scoped_refptr<TextureLayer>(new TextureLayer(client, false));
|
| -}
|
| -
|
| scoped_refptr<TextureLayer> TextureLayer::CreateForMailbox(
|
| TextureLayerClient* client) {
|
| - return scoped_refptr<TextureLayer>(new TextureLayer(client, true));
|
| + return scoped_refptr<TextureLayer>(new TextureLayer(client));
|
| }
|
|
|
| -TextureLayer::TextureLayer(TextureLayerClient* client, bool uses_mailbox)
|
| +TextureLayer::TextureLayer(TextureLayerClient* client)
|
| : Layer(),
|
| client_(client),
|
| - uses_mailbox_(uses_mailbox),
|
| flipped_(true),
|
| uv_top_left_(0.f, 0.f),
|
| uv_bottom_right_(1.f, 1.f),
|
| premultiplied_alpha_(true),
|
| blend_background_color_(false),
|
| rate_limit_context_(false),
|
| - impl_may_draw_client_data_(false),
|
| - texture_id_(0),
|
| needs_set_mailbox_(false) {
|
| vertex_opacity_[0] = 1.0f;
|
| vertex_opacity_[1] = 1.0f;
|
| @@ -55,25 +48,11 @@ void TextureLayer::ClearClient() {
|
| }
|
|
|
| void TextureLayer::ClearTexture() {
|
| - if (uses_mailbox_) {
|
| - SetTextureMailbox(TextureMailbox(), scoped_ptr<SingleReleaseCallback>());
|
| - } else if (texture_id_) {
|
| - if (impl_may_draw_client_data_) {
|
| - DCHECK(layer_tree_host());
|
| - layer_tree_host()->AcquireLayerTextures();
|
| - impl_may_draw_client_data_ = false;
|
| - }
|
| - texture_id_ = 0;
|
| - SetNeedsCommit();
|
| - // The texture id needs to be removed from the active tree before the
|
| - // commit is called complete.
|
| - SetNextCommitWaitsForActivation();
|
| - }
|
| + SetTextureMailbox(TextureMailbox(), scoped_ptr<SingleReleaseCallback>());
|
| }
|
|
|
| scoped_ptr<LayerImpl> TextureLayer::CreateLayerImpl(LayerTreeImpl* tree_impl) {
|
| - return TextureLayerImpl::Create(tree_impl, id(), uses_mailbox_).
|
| - PassAs<LayerImpl>();
|
| + return TextureLayerImpl::Create(tree_impl, id()).PassAs<LayerImpl>();
|
| }
|
|
|
| void TextureLayer::SetFlipped(bool flipped) {
|
| @@ -138,7 +117,6 @@ void TextureLayer::SetTextureMailboxInternal(
|
| scoped_ptr<SingleReleaseCallback> release_callback,
|
| bool requires_commit,
|
| bool allow_mailbox_reuse) {
|
| - DCHECK(uses_mailbox_);
|
| DCHECK(!mailbox.IsValid() || !holder_ref_ ||
|
| !mailbox.Equals(holder_ref_->holder()->mailbox()) ||
|
| allow_mailbox_reuse);
|
| @@ -205,20 +183,13 @@ void TextureLayer::SetLayerTreeHost(LayerTreeHost* host) {
|
| }
|
|
|
| if (layer_tree_host()) {
|
| - if (impl_may_draw_client_data_) {
|
| - layer_tree_host()->AcquireLayerTextures();
|
| - // The texture id needs to be removed from the active tree before the
|
| - // commit is called complete.
|
| - SetNextCommitWaitsForActivation();
|
| - impl_may_draw_client_data_ = false;
|
| - }
|
| if (rate_limit_context_ && client_)
|
| layer_tree_host()->StopRateLimiter();
|
| }
|
| // If we're removed from the tree, the TextureLayerImpl will be destroyed, and
|
| // we will need to set the mailbox again on a new TextureLayerImpl the next
|
| // time we push.
|
| - if (!host && uses_mailbox_ && holder_ref_) {
|
| + if (!host && holder_ref_) {
|
| needs_set_mailbox_ = true;
|
| // The active frame needs to be replaced and the mailbox returned before the
|
| // commit is called complete.
|
| @@ -228,36 +199,27 @@ void TextureLayer::SetLayerTreeHost(LayerTreeHost* host) {
|
| }
|
|
|
| bool TextureLayer::DrawsContent() const {
|
| - return (client_ || texture_id_ || holder_ref_) && Layer::DrawsContent();
|
| + return (client_ || holder_ref_) && Layer::DrawsContent();
|
| }
|
|
|
| bool TextureLayer::Update(ResourceUpdateQueue* queue,
|
| const OcclusionTracker<Layer>* occlusion) {
|
| bool updated = Layer::Update(queue, occlusion);
|
| if (client_) {
|
| - if (uses_mailbox_) {
|
| - TextureMailbox mailbox;
|
| - scoped_ptr<SingleReleaseCallback> release_callback;
|
| - if (client_->PrepareTextureMailbox(
|
| - &mailbox,
|
| - &release_callback,
|
| - layer_tree_host()->UsingSharedMemoryResources())) {
|
| - // Already within a commit, no need to do another one immediately.
|
| - bool requires_commit = false;
|
| - bool allow_mailbox_reuse = false;
|
| - SetTextureMailboxInternal(mailbox,
|
| - release_callback.Pass(),
|
| - requires_commit,
|
| - allow_mailbox_reuse);
|
| - updated = true;
|
| - }
|
| - } else {
|
| - texture_id_ = client_->PrepareTexture();
|
| + TextureMailbox mailbox;
|
| + scoped_ptr<SingleReleaseCallback> release_callback;
|
| + if (client_->PrepareTextureMailbox(
|
| + &mailbox,
|
| + &release_callback,
|
| + layer_tree_host()->UsingSharedMemoryResources())) {
|
| + // Already within a commit, no need to do another one immediately.
|
| + bool requires_commit = false;
|
| + bool allow_mailbox_reuse = false;
|
| + SetTextureMailboxInternal(mailbox,
|
| + release_callback.Pass(),
|
| + requires_commit,
|
| + allow_mailbox_reuse);
|
| updated = true;
|
| - SetNeedsPushProperties();
|
| - // The texture id needs to be removed from the active tree before the
|
| - // commit is called complete.
|
| - SetNextCommitWaitsForActivation();
|
| }
|
| }
|
|
|
| @@ -277,7 +239,7 @@ void TextureLayer::PushPropertiesTo(LayerImpl* layer) {
|
| texture_layer->SetVertexOpacity(vertex_opacity_);
|
| texture_layer->SetPremultipliedAlpha(premultiplied_alpha_);
|
| texture_layer->SetBlendBackgroundColor(blend_background_color_);
|
| - if (uses_mailbox_ && needs_set_mailbox_) {
|
| + if (needs_set_mailbox_) {
|
| TextureMailbox texture_mailbox;
|
| scoped_ptr<SingleReleaseCallback> release_callback;
|
| if (holder_ref_) {
|
| @@ -287,9 +249,6 @@ void TextureLayer::PushPropertiesTo(LayerImpl* layer) {
|
| }
|
| texture_layer->SetTextureMailbox(texture_mailbox, release_callback.Pass());
|
| needs_set_mailbox_ = false;
|
| - } else {
|
| - texture_layer->SetTextureId(texture_id_);
|
| - impl_may_draw_client_data_ = texture_id_ && Layer::DrawsContent();
|
| }
|
| }
|
|
|
|
|