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/trees/layer_tree_impl.h" | 5 #include "cc/trees/layer_tree_impl.h" |
6 | 6 |
7 #include "base/debug/trace_event.h" | 7 #include "base/debug/trace_event.h" |
8 #include "cc/animation/keyframed_animation_curve.h" | 8 #include "cc/animation/keyframed_animation_curve.h" |
9 #include "cc/animation/scrollbar_animation_controller.h" | 9 #include "cc/animation/scrollbar_animation_controller.h" |
10 #include "cc/debug/traced_value.h" | 10 #include "cc/debug/traced_value.h" |
11 #include "cc/layers/heads_up_display_layer_impl.h" | 11 #include "cc/layers/heads_up_display_layer_impl.h" |
12 #include "cc/layers/render_surface_impl.h" | 12 #include "cc/layers/render_surface_impl.h" |
13 #include "cc/layers/scrollbar_layer_impl_base.h" | 13 #include "cc/layers/scrollbar_layer_impl_base.h" |
14 #include "cc/trees/layer_tree_host_common.h" | 14 #include "cc/trees/layer_tree_host_common.h" |
15 #include "cc/trees/layer_tree_host_impl.h" | 15 #include "cc/trees/layer_tree_host_impl.h" |
16 #include "ui/gfx/size_conversions.h" | 16 #include "ui/gfx/size_conversions.h" |
17 #include "ui/gfx/vector2d_conversions.h" | 17 #include "ui/gfx/vector2d_conversions.h" |
18 | 18 |
19 namespace cc { | 19 namespace cc { |
20 | 20 |
21 LayerTreeImpl::LayerTreeImpl(LayerTreeHostImpl* layer_tree_host_impl) | 21 LayerTreeImpl::LayerTreeImpl(LayerTreeHostImpl* layer_tree_host_impl) |
22 : layer_tree_host_impl_(layer_tree_host_impl), | 22 : layer_tree_host_impl_(layer_tree_host_impl), |
23 source_frame_number_(-1), | 23 source_frame_number_(-1), |
24 hud_layer_(0), | 24 hud_layer_(0), |
25 root_scroll_layer_(NULL), | 25 root_scroll_layer_(NULL), |
26 currently_scrolling_layer_(NULL), | 26 currently_scrolling_layer_(NULL), |
27 root_layer_scroll_offset_delegate_(NULL), | 27 root_layer_scroll_offset_delegate_(NULL), |
28 background_color_(0), | 28 background_color_(0), |
29 has_transparent_background_(false), | 29 has_transparent_background_(false), |
30 page_scale_layer_(NULL), | |
31 inner_viewport_scroll_layer_(NULL), | |
32 outer_viewport_scroll_layer_(NULL), | |
30 page_scale_factor_(1), | 33 page_scale_factor_(1), |
31 page_scale_delta_(1), | 34 page_scale_delta_(1), |
32 sent_page_scale_delta_(1), | 35 sent_page_scale_delta_(1), |
33 min_page_scale_factor_(0), | 36 min_page_scale_factor_(0), |
34 max_page_scale_factor_(0), | 37 max_page_scale_factor_(0), |
35 scrolling_layer_id_from_previous_tree_(0), | 38 scrolling_layer_id_from_previous_tree_(0), |
36 contents_textures_purged_(false), | 39 contents_textures_purged_(false), |
37 viewport_size_invalid_(false), | 40 viewport_size_invalid_(false), |
38 needs_update_draw_properties_(true), | 41 needs_update_draw_properties_(true), |
39 needs_full_tree_sync_(true) { | 42 needs_full_tree_sync_(true) { |
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
108 DCHECK_EQ(ui_resource_request_queue_.size(), 0u); | 111 DCHECK_EQ(ui_resource_request_queue_.size(), 0u); |
109 | 112 |
110 target_tree->SetLatencyInfo(latency_info_); | 113 target_tree->SetLatencyInfo(latency_info_); |
111 latency_info_.Clear(); | 114 latency_info_.Clear(); |
112 target_tree->SetPageScaleFactorAndLimits( | 115 target_tree->SetPageScaleFactorAndLimits( |
113 page_scale_factor(), min_page_scale_factor(), max_page_scale_factor()); | 116 page_scale_factor(), min_page_scale_factor(), max_page_scale_factor()); |
114 target_tree->SetPageScaleDelta( | 117 target_tree->SetPageScaleDelta( |
115 target_tree->page_scale_delta() / target_tree->sent_page_scale_delta()); | 118 target_tree->page_scale_delta() / target_tree->sent_page_scale_delta()); |
116 target_tree->set_sent_page_scale_delta(1); | 119 target_tree->set_sent_page_scale_delta(1); |
117 | 120 |
121 if (settings().use_pinch_virtual_viewport) | |
enne (OOO)
2013/09/11 20:13:03
style nit: {}
wjmaclean
2013/09/12 18:16:47
Done.
| |
122 target_tree->SetPinchViewportLayerIds(page_scale_layer_->id(), | |
123 inner_viewport_scroll_layer_->id(), | |
124 outer_viewport_scroll_layer_->id()); | |
118 // This should match the property synchronization in | 125 // This should match the property synchronization in |
119 // LayerTreeHost::finishCommitOnImplThread(). | 126 // LayerTreeHost::finishCommitOnImplThread(). |
120 target_tree->set_source_frame_number(source_frame_number()); | 127 target_tree->set_source_frame_number(source_frame_number()); |
121 target_tree->set_background_color(background_color()); | 128 target_tree->set_background_color(background_color()); |
122 target_tree->set_has_transparent_background(has_transparent_background()); | 129 target_tree->set_has_transparent_background(has_transparent_background()); |
123 | 130 |
124 if (ContentsTexturesPurged()) | 131 if (ContentsTexturesPurged()) |
125 target_tree->SetContentsTexturesPurged(); | 132 target_tree->SetContentsTexturesPurged(); |
126 else | 133 else |
127 target_tree->ResetContentsTexturesPurged(); | 134 target_tree->ResetContentsTexturesPurged(); |
(...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
250 | 257 |
251 void LayerTreeImpl::ApplyScrollDeltasSinceBeginFrame() { | 258 void LayerTreeImpl::ApplyScrollDeltasSinceBeginFrame() { |
252 DCHECK(IsPendingTree()); | 259 DCHECK(IsPendingTree()); |
253 if (!root_layer()) | 260 if (!root_layer()) |
254 return; | 261 return; |
255 | 262 |
256 LayerTreeHostCommon::CallFunctionForSubtree( | 263 LayerTreeHostCommon::CallFunctionForSubtree( |
257 root_layer(), base::Bind(&ApplyScrollDeltasSinceBeginFrameTo)); | 264 root_layer(), base::Bind(&ApplyScrollDeltasSinceBeginFrameTo)); |
258 } | 265 } |
259 | 266 |
267 void LayerTreeImpl::SetPinchViewportLayerIds( | |
enne (OOO)
2013/09/11 20:13:03
Should this DCHECK that these exist? It seems like
wjmaclean
2013/09/12 18:16:47
Done.
We need to check the validity of the layer
| |
268 int page_scale_layer_id, | |
269 int inner_viewport_scroll_layer_id, | |
270 int outer_viewport_scroll_layer_id) { | |
271 page_scale_layer_ = FindPendingTreeLayerById(page_scale_layer_id); | |
272 inner_viewport_scroll_layer_ = | |
273 FindPendingTreeLayerById(inner_viewport_scroll_layer_id); | |
274 outer_viewport_scroll_layer_ = | |
275 FindPendingTreeLayerById(outer_viewport_scroll_layer_id); | |
276 } | |
277 | |
260 // TODO(wjmaclean) This needs to go away, and be replaced with a single core | 278 // TODO(wjmaclean) This needs to go away, and be replaced with a single core |
261 // of login that works for both scrollbar layer types. This is already planned | 279 // of login that works for both scrollbar layer types. This is already planned |
262 // as part of the larger pinch-zoom re-factoring viewport. | 280 // as part of the larger pinch-zoom re-factoring viewport. |
263 void LayerTreeImpl::UpdateSolidColorScrollbars() { | 281 void LayerTreeImpl::UpdateSolidColorScrollbars() { |
264 DCHECK(settings().solid_color_scrollbars); | 282 DCHECK(settings().solid_color_scrollbars); |
265 | 283 |
266 LayerImpl* root_scroll = RootScrollLayer(); | 284 LayerImpl* root_scroll = RootScrollLayer(); |
267 DCHECK(root_scroll); | 285 DCHECK(root_scroll); |
268 DCHECK(IsActiveTree()); | 286 DCHECK(IsActiveTree()); |
269 | 287 |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
309 if (!root_layer()) | 327 if (!root_layer()) |
310 return; | 328 return; |
311 | 329 |
312 { | 330 { |
313 TRACE_EVENT2("cc", | 331 TRACE_EVENT2("cc", |
314 "LayerTreeImpl::UpdateDrawProperties", | 332 "LayerTreeImpl::UpdateDrawProperties", |
315 "IsActive", | 333 "IsActive", |
316 IsActiveTree(), | 334 IsActiveTree(), |
317 "SourceFrameNumber", | 335 "SourceFrameNumber", |
318 source_frame_number_); | 336 source_frame_number_); |
337 LayerImpl* page_scale_layer = | |
338 page_scale_layer_ ? page_scale_layer_ : RootContainerLayer(); | |
319 LayerTreeHostCommon::CalcDrawPropsImplInputs inputs( | 339 LayerTreeHostCommon::CalcDrawPropsImplInputs inputs( |
320 root_layer(), | 340 root_layer(), |
321 DrawViewportSize(), | 341 DrawViewportSize(), |
322 layer_tree_host_impl_->DrawTransform(), | 342 layer_tree_host_impl_->DrawTransform(), |
323 device_scale_factor(), | 343 device_scale_factor(), |
324 total_page_scale_factor(), | 344 total_page_scale_factor(), |
325 root_scroll_layer_ ? root_scroll_layer_->parent() : NULL, | 345 page_scale_layer, |
326 MaxTextureSize(), | 346 MaxTextureSize(), |
327 settings().can_use_lcd_text, | 347 settings().can_use_lcd_text, |
328 settings().layer_transforms_should_scale_layer_contents, | 348 settings().layer_transforms_should_scale_layer_contents, |
329 &render_surface_layer_list_); | 349 &render_surface_layer_list_); |
330 LayerTreeHostCommon::CalculateDrawProperties(&inputs); | 350 LayerTreeHostCommon::CalculateDrawProperties(&inputs); |
331 } | 351 } |
332 | 352 |
333 DCHECK(!needs_update_draw_properties_) << | 353 DCHECK(!needs_update_draw_properties_) << |
334 "CalcDrawProperties should not set_needs_update_draw_properties()"; | 354 "CalcDrawProperties should not set_needs_update_draw_properties()"; |
335 } | 355 } |
(...skipping 331 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
667 const std::vector<LayerImpl*> LayerTreeImpl::LayersWithCopyOutputRequest() | 687 const std::vector<LayerImpl*> LayerTreeImpl::LayersWithCopyOutputRequest() |
668 const { | 688 const { |
669 // Only the active tree needs to know about layers with copy requests, as | 689 // Only the active tree needs to know about layers with copy requests, as |
670 // they are aborted if not serviced during draw. | 690 // they are aborted if not serviced during draw. |
671 DCHECK(IsActiveTree()); | 691 DCHECK(IsActiveTree()); |
672 | 692 |
673 return layers_with_copy_output_request_; | 693 return layers_with_copy_output_request_; |
674 } | 694 } |
675 | 695 |
676 } // namespace cc | 696 } // namespace cc |
OLD | NEW |