| OLD | NEW |
| 1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 2012 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/delegated_renderer_layer_impl.h" | 5 #include "cc/layers/delegated_renderer_layer_impl.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <utility> | 8 #include <utility> |
| 9 | 9 |
| 10 #include "base/bind.h" | 10 #include "base/bind.h" |
| (...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 80 if (child_id_) | 80 if (child_id_) |
| 81 return; | 81 return; |
| 82 | 82 |
| 83 ResourceProvider* resource_provider = layer_tree_impl()->resource_provider(); | 83 ResourceProvider* resource_provider = layer_tree_impl()->resource_provider(); |
| 84 child_id_ = resource_provider->CreateChild(return_callback); | 84 child_id_ = resource_provider->CreateChild(return_callback); |
| 85 own_child_id_ = true; | 85 own_child_id_ = true; |
| 86 } | 86 } |
| 87 | 87 |
| 88 void DelegatedRendererLayerImpl::SetFrameData( | 88 void DelegatedRendererLayerImpl::SetFrameData( |
| 89 const DelegatedFrameData* frame_data, | 89 const DelegatedFrameData* frame_data, |
| 90 const gfx::RectF& damage_in_frame) { | 90 const gfx::Rect& damage_in_frame) { |
| 91 DCHECK(child_id_) << "CreateChildIdIfNeeded must be called first."; | 91 DCHECK(child_id_) << "CreateChildIdIfNeeded must be called first."; |
| 92 DCHECK(frame_data); | 92 DCHECK(frame_data); |
| 93 DCHECK(!frame_data->render_pass_list.empty()); | 93 DCHECK(!frame_data->render_pass_list.empty()); |
| 94 // A frame with an empty root render pass is invalid. | 94 // A frame with an empty root render pass is invalid. |
| 95 DCHECK(!frame_data->render_pass_list.back()->output_rect.IsEmpty()); | 95 DCHECK(!frame_data->render_pass_list.back()->output_rect.IsEmpty()); |
| 96 | 96 |
| 97 ResourceProvider* resource_provider = layer_tree_impl()->resource_provider(); | 97 ResourceProvider* resource_provider = layer_tree_impl()->resource_provider(); |
| 98 const ResourceProvider::ResourceIdMap& resource_map = | 98 const ResourceProvider::ResourceIdMap& resource_map = |
| 99 resource_provider->GetChildToParentMap(child_id_); | 99 resource_provider->GetChildToParentMap(child_id_); |
| 100 | 100 |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 146 // used and we don't want to return them early. | 146 // used and we don't want to return them early. |
| 147 resources_.swap(resources_in_frame); | 147 resources_.swap(resources_in_frame); |
| 148 TakeOwnershipOfResourcesIfOnActiveTree(resources_); | 148 TakeOwnershipOfResourcesIfOnActiveTree(resources_); |
| 149 | 149 |
| 150 inverse_device_scale_factor_ = 1.0f / frame_data->device_scale_factor; | 150 inverse_device_scale_factor_ = 1.0f / frame_data->device_scale_factor; |
| 151 // Display size is already set so we can compute what the damage rect | 151 // Display size is already set so we can compute what the damage rect |
| 152 // will be in layer space. The damage may exceed the visible portion of | 152 // will be in layer space. The damage may exceed the visible portion of |
| 153 // the frame, so intersect the damage to the layer's bounds. | 153 // the frame, so intersect the damage to the layer's bounds. |
| 154 RenderPass* new_root_pass = render_pass_list.back(); | 154 RenderPass* new_root_pass = render_pass_list.back(); |
| 155 gfx::Size frame_size = new_root_pass->output_rect.size(); | 155 gfx::Size frame_size = new_root_pass->output_rect.size(); |
| 156 gfx::RectF damage_in_layer = damage_in_frame; | 156 gfx::Rect damage_in_layer = |
| 157 damage_in_layer.Scale(inverse_device_scale_factor_); | 157 gfx::ScaleToEnclosingRect(damage_in_frame, inverse_device_scale_factor_); |
| 158 SetUpdateRect(gfx::IntersectRects( | 158 SetUpdateRect(gfx::IntersectRects( |
| 159 gfx::UnionRects(update_rect(), gfx::ToEnclosingRect(damage_in_layer)), | 159 gfx::UnionRects(update_rect(), damage_in_layer), gfx::Rect(bounds()))); |
| 160 gfx::Rect(bounds()))); | |
| 161 | 160 |
| 162 SetRenderPasses(&render_pass_list); | 161 SetRenderPasses(&render_pass_list); |
| 163 have_render_passes_to_push_ = true; | 162 have_render_passes_to_push_ = true; |
| 164 } | 163 } |
| 165 | 164 |
| 166 void DelegatedRendererLayerImpl::TakeOwnershipOfResourcesIfOnActiveTree( | 165 void DelegatedRendererLayerImpl::TakeOwnershipOfResourcesIfOnActiveTree( |
| 167 const ResourceProvider::ResourceIdSet& resources) { | 166 const ResourceProvider::ResourceIdSet& resources) { |
| 168 DCHECK(child_id_); | 167 DCHECK(child_id_); |
| 169 if (!layer_tree_impl()->IsActiveTree()) | 168 if (!layer_tree_impl()->IsActiveTree()) |
| 170 return; | 169 return; |
| (...skipping 344 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 515 if (own_child_id_) { | 514 if (own_child_id_) { |
| 516 ResourceProvider* provider = layer_tree_impl()->resource_provider(); | 515 ResourceProvider* provider = layer_tree_impl()->resource_provider(); |
| 517 provider->DestroyChild(child_id_); | 516 provider->DestroyChild(child_id_); |
| 518 } | 517 } |
| 519 | 518 |
| 520 resources_.clear(); | 519 resources_.clear(); |
| 521 child_id_ = 0; | 520 child_id_ = 0; |
| 522 } | 521 } |
| 523 | 522 |
| 524 } // namespace cc | 523 } // namespace cc |
| OLD | NEW |