| OLD | NEW |
| 1 // Copyright 2011 The Chromium Authors. All rights reserved. | 1 // Copyright 2011 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "cc/layers/texture_layer_impl.h" | 5 #include "cc/layers/texture_layer_impl.h" |
| 6 | 6 |
| 7 #include <vector> | 7 #include <vector> |
| 8 | 8 |
| 9 #include "base/strings/stringprintf.h" | 9 #include "base/strings/stringprintf.h" |
| 10 #include "cc/output/renderer.h" | 10 #include "cc/output/renderer.h" |
| (...skipping 24 matching lines...) Expand all Loading... |
| 35 } | 35 } |
| 36 | 36 |
| 37 TextureLayerImpl::~TextureLayerImpl() { FreeTextureMailbox(); } | 37 TextureLayerImpl::~TextureLayerImpl() { FreeTextureMailbox(); } |
| 38 | 38 |
| 39 void TextureLayerImpl::SetTextureMailbox( | 39 void TextureLayerImpl::SetTextureMailbox( |
| 40 const TextureMailbox& mailbox, | 40 const TextureMailbox& mailbox, |
| 41 scoped_ptr<SingleReleaseCallbackImpl> release_callback) { | 41 scoped_ptr<SingleReleaseCallbackImpl> release_callback) { |
| 42 DCHECK_EQ(mailbox.IsValid(), !!release_callback); | 42 DCHECK_EQ(mailbox.IsValid(), !!release_callback); |
| 43 FreeTextureMailbox(); | 43 FreeTextureMailbox(); |
| 44 texture_mailbox_ = mailbox; | 44 texture_mailbox_ = mailbox; |
| 45 release_callback_ = release_callback.Pass(); | 45 release_callback_ = std::move(release_callback); |
| 46 own_mailbox_ = true; | 46 own_mailbox_ = true; |
| 47 valid_texture_copy_ = false; | 47 valid_texture_copy_ = false; |
| 48 SetNeedsPushProperties(); | 48 SetNeedsPushProperties(); |
| 49 } | 49 } |
| 50 | 50 |
| 51 scoped_ptr<LayerImpl> TextureLayerImpl::CreateLayerImpl( | 51 scoped_ptr<LayerImpl> TextureLayerImpl::CreateLayerImpl( |
| 52 LayerTreeImpl* tree_impl) { | 52 LayerTreeImpl* tree_impl) { |
| 53 return TextureLayerImpl::Create(tree_impl, id()); | 53 return TextureLayerImpl::Create(tree_impl, id()); |
| 54 } | 54 } |
| 55 | 55 |
| 56 void TextureLayerImpl::PushPropertiesTo(LayerImpl* layer) { | 56 void TextureLayerImpl::PushPropertiesTo(LayerImpl* layer) { |
| 57 LayerImpl::PushPropertiesTo(layer); | 57 LayerImpl::PushPropertiesTo(layer); |
| 58 | 58 |
| 59 TextureLayerImpl* texture_layer = static_cast<TextureLayerImpl*>(layer); | 59 TextureLayerImpl* texture_layer = static_cast<TextureLayerImpl*>(layer); |
| 60 texture_layer->SetFlipped(flipped_); | 60 texture_layer->SetFlipped(flipped_); |
| 61 texture_layer->SetUVTopLeft(uv_top_left_); | 61 texture_layer->SetUVTopLeft(uv_top_left_); |
| 62 texture_layer->SetUVBottomRight(uv_bottom_right_); | 62 texture_layer->SetUVBottomRight(uv_bottom_right_); |
| 63 texture_layer->SetVertexOpacity(vertex_opacity_); | 63 texture_layer->SetVertexOpacity(vertex_opacity_); |
| 64 texture_layer->SetPremultipliedAlpha(premultiplied_alpha_); | 64 texture_layer->SetPremultipliedAlpha(premultiplied_alpha_); |
| 65 texture_layer->SetBlendBackgroundColor(blend_background_color_); | 65 texture_layer->SetBlendBackgroundColor(blend_background_color_); |
| 66 texture_layer->SetNearestNeighbor(nearest_neighbor_); | 66 texture_layer->SetNearestNeighbor(nearest_neighbor_); |
| 67 if (own_mailbox_) { | 67 if (own_mailbox_) { |
| 68 texture_layer->SetTextureMailbox(texture_mailbox_, | 68 texture_layer->SetTextureMailbox(texture_mailbox_, |
| 69 release_callback_.Pass()); | 69 std::move(release_callback_)); |
| 70 own_mailbox_ = false; | 70 own_mailbox_ = false; |
| 71 } | 71 } |
| 72 } | 72 } |
| 73 | 73 |
| 74 bool TextureLayerImpl::WillDraw(DrawMode draw_mode, | 74 bool TextureLayerImpl::WillDraw(DrawMode draw_mode, |
| 75 ResourceProvider* resource_provider) { | 75 ResourceProvider* resource_provider) { |
| 76 if (draw_mode == DRAW_MODE_RESOURCELESS_SOFTWARE) | 76 if (draw_mode == DRAW_MODE_RESOURCELESS_SOFTWARE) |
| 77 return false; | 77 return false; |
| 78 | 78 |
| 79 if (own_mailbox_) { | 79 if (own_mailbox_) { |
| 80 DCHECK(!external_texture_resource_); | 80 DCHECK(!external_texture_resource_); |
| 81 if ((draw_mode == DRAW_MODE_HARDWARE && texture_mailbox_.IsTexture()) || | 81 if ((draw_mode == DRAW_MODE_HARDWARE && texture_mailbox_.IsTexture()) || |
| 82 (draw_mode == DRAW_MODE_SOFTWARE && | 82 (draw_mode == DRAW_MODE_SOFTWARE && |
| 83 texture_mailbox_.IsSharedMemory())) { | 83 texture_mailbox_.IsSharedMemory())) { |
| 84 external_texture_resource_ = | 84 external_texture_resource_ = |
| 85 resource_provider->CreateResourceFromTextureMailbox( | 85 resource_provider->CreateResourceFromTextureMailbox( |
| 86 texture_mailbox_, release_callback_.Pass()); | 86 texture_mailbox_, std::move(release_callback_)); |
| 87 DCHECK(external_texture_resource_); | 87 DCHECK(external_texture_resource_); |
| 88 texture_copy_ = nullptr; | 88 texture_copy_ = nullptr; |
| 89 valid_texture_copy_ = false; | 89 valid_texture_copy_ = false; |
| 90 } | 90 } |
| 91 if (external_texture_resource_) | 91 if (external_texture_resource_) |
| 92 own_mailbox_ = false; | 92 own_mailbox_ = false; |
| 93 } | 93 } |
| 94 | 94 |
| 95 if (!valid_texture_copy_ && draw_mode == DRAW_MODE_HARDWARE && | 95 if (!valid_texture_copy_ && draw_mode == DRAW_MODE_HARDWARE && |
| 96 texture_mailbox_.IsSharedMemory()) { | 96 texture_mailbox_.IsSharedMemory()) { |
| (...skipping 160 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 257 } else if (external_texture_resource_) { | 257 } else if (external_texture_resource_) { |
| 258 DCHECK(!own_mailbox_); | 258 DCHECK(!own_mailbox_); |
| 259 ResourceProvider* resource_provider = | 259 ResourceProvider* resource_provider = |
| 260 layer_tree_impl()->resource_provider(); | 260 layer_tree_impl()->resource_provider(); |
| 261 resource_provider->DeleteResource(external_texture_resource_); | 261 resource_provider->DeleteResource(external_texture_resource_); |
| 262 external_texture_resource_ = 0; | 262 external_texture_resource_ = 0; |
| 263 } | 263 } |
| 264 } | 264 } |
| 265 | 265 |
| 266 } // namespace cc | 266 } // namespace cc |
| OLD | NEW |