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 |