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/layer.h" | |
13 #include "cc/layers/render_surface_impl.h" | 12 #include "cc/layers/render_surface_impl.h" |
14 #include "cc/layers/scrollbar_layer_impl_base.h" | 13 #include "cc/layers/scrollbar_layer_impl_base.h" |
15 #include "cc/trees/layer_tree_host_common.h" | 14 #include "cc/trees/layer_tree_host_common.h" |
16 #include "cc/trees/layer_tree_host_impl.h" | 15 #include "cc/trees/layer_tree_host_impl.h" |
17 #include "ui/gfx/size_conversions.h" | 16 #include "ui/gfx/size_conversions.h" |
18 #include "ui/gfx/vector2d_conversions.h" | 17 #include "ui/gfx/vector2d_conversions.h" |
19 | 18 |
20 namespace cc { | 19 namespace cc { |
21 | 20 |
22 LayerTreeImpl::LayerTreeImpl(LayerTreeHostImpl* layer_tree_host_impl) | 21 LayerTreeImpl::LayerTreeImpl(LayerTreeHostImpl* layer_tree_host_impl) |
23 : layer_tree_host_impl_(layer_tree_host_impl), | 22 : layer_tree_host_impl_(layer_tree_host_impl), |
24 source_frame_number_(-1), | 23 source_frame_number_(-1), |
25 hud_layer_(0), | 24 hud_layer_(0), |
26 root_scroll_layer_(NULL), | 25 root_scroll_layer_(NULL), |
27 currently_scrolling_layer_(NULL), | 26 currently_scrolling_layer_(NULL), |
28 root_layer_scroll_offset_delegate_(NULL), | 27 root_layer_scroll_offset_delegate_(NULL), |
29 background_color_(0), | 28 background_color_(0), |
30 has_transparent_background_(false), | 29 has_transparent_background_(false), |
31 page_scale_layer_(NULL), | |
32 inner_viewport_scroll_layer_(NULL), | |
33 outer_viewport_scroll_layer_(NULL), | |
34 page_scale_factor_(1), | 30 page_scale_factor_(1), |
35 page_scale_delta_(1), | 31 page_scale_delta_(1), |
36 sent_page_scale_delta_(1), | 32 sent_page_scale_delta_(1), |
37 min_page_scale_factor_(0), | 33 min_page_scale_factor_(0), |
38 max_page_scale_factor_(0), | 34 max_page_scale_factor_(0), |
39 scrolling_layer_id_from_previous_tree_(0), | 35 scrolling_layer_id_from_previous_tree_(0), |
40 contents_textures_purged_(false), | 36 contents_textures_purged_(false), |
41 viewport_size_invalid_(false), | 37 viewport_size_invalid_(false), |
42 needs_update_draw_properties_(true), | 38 needs_update_draw_properties_(true), |
43 needs_full_tree_sync_(true) { | 39 needs_full_tree_sync_(true) { |
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
112 DCHECK_EQ(ui_resource_request_queue_.size(), 0u); | 108 DCHECK_EQ(ui_resource_request_queue_.size(), 0u); |
113 | 109 |
114 target_tree->SetLatencyInfo(latency_info_); | 110 target_tree->SetLatencyInfo(latency_info_); |
115 latency_info_.Clear(); | 111 latency_info_.Clear(); |
116 target_tree->SetPageScaleFactorAndLimits( | 112 target_tree->SetPageScaleFactorAndLimits( |
117 page_scale_factor(), min_page_scale_factor(), max_page_scale_factor()); | 113 page_scale_factor(), min_page_scale_factor(), max_page_scale_factor()); |
118 target_tree->SetPageScaleDelta( | 114 target_tree->SetPageScaleDelta( |
119 target_tree->page_scale_delta() / target_tree->sent_page_scale_delta()); | 115 target_tree->page_scale_delta() / target_tree->sent_page_scale_delta()); |
120 target_tree->set_sent_page_scale_delta(1); | 116 target_tree->set_sent_page_scale_delta(1); |
121 | 117 |
122 if (settings().use_pinch_virtual_viewport) { | |
123 target_tree->SetViewportLayersFromIds( | |
124 page_scale_layer_->id(), | |
125 inner_viewport_scroll_layer_->id(), | |
126 outer_viewport_scroll_layer_ ? outer_viewport_scroll_layer_->id() | |
127 : Layer::INVALID_ID); | |
128 } | |
129 // This should match the property synchronization in | 118 // This should match the property synchronization in |
130 // LayerTreeHost::finishCommitOnImplThread(). | 119 // LayerTreeHost::finishCommitOnImplThread(). |
131 target_tree->set_source_frame_number(source_frame_number()); | 120 target_tree->set_source_frame_number(source_frame_number()); |
132 target_tree->set_background_color(background_color()); | 121 target_tree->set_background_color(background_color()); |
133 target_tree->set_has_transparent_background(has_transparent_background()); | 122 target_tree->set_has_transparent_background(has_transparent_background()); |
134 | 123 |
135 if (ContentsTexturesPurged()) | 124 if (ContentsTexturesPurged()) |
136 target_tree->SetContentsTexturesPurged(); | 125 target_tree->SetContentsTexturesPurged(); |
137 else | 126 else |
138 target_tree->ResetContentsTexturesPurged(); | 127 target_tree->ResetContentsTexturesPurged(); |
(...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
261 | 250 |
262 void LayerTreeImpl::ApplyScrollDeltasSinceBeginFrame() { | 251 void LayerTreeImpl::ApplyScrollDeltasSinceBeginFrame() { |
263 DCHECK(IsPendingTree()); | 252 DCHECK(IsPendingTree()); |
264 if (!root_layer()) | 253 if (!root_layer()) |
265 return; | 254 return; |
266 | 255 |
267 LayerTreeHostCommon::CallFunctionForSubtree( | 256 LayerTreeHostCommon::CallFunctionForSubtree( |
268 root_layer(), base::Bind(&ApplyScrollDeltasSinceBeginFrameTo)); | 257 root_layer(), base::Bind(&ApplyScrollDeltasSinceBeginFrameTo)); |
269 } | 258 } |
270 | 259 |
271 void LayerTreeImpl::SetViewportLayersFromIds( | |
272 int page_scale_layer_id, | |
273 int inner_viewport_scroll_layer_id, | |
274 int outer_viewport_scroll_layer_id) { | |
275 page_scale_layer_ = LayerById(page_scale_layer_id); | |
276 DCHECK(page_scale_layer_); | |
277 | |
278 inner_viewport_scroll_layer_ = | |
279 LayerById(inner_viewport_scroll_layer_id); | |
280 DCHECK(inner_viewport_scroll_layer_); | |
281 | |
282 outer_viewport_scroll_layer_ = | |
283 LayerById(outer_viewport_scroll_layer_id); | |
284 DCHECK(outer_viewport_scroll_layer_ || | |
285 outer_viewport_scroll_layer_id == Layer::INVALID_ID); | |
286 } | |
287 | |
288 void LayerTreeImpl::ClearViewportLayers() { | |
289 page_scale_layer_ = NULL; | |
290 inner_viewport_scroll_layer_ = NULL; | |
291 outer_viewport_scroll_layer_ = NULL; | |
292 } | |
293 | |
294 // TODO(wjmaclean) This needs to go away, and be replaced with a single core | 260 // TODO(wjmaclean) This needs to go away, and be replaced with a single core |
295 // of login that works for both scrollbar layer types. This is already planned | 261 // of login that works for both scrollbar layer types. This is already planned |
296 // as part of the larger pinch-zoom re-factoring viewport. | 262 // as part of the larger pinch-zoom re-factoring viewport. |
297 void LayerTreeImpl::UpdateSolidColorScrollbars() { | 263 void LayerTreeImpl::UpdateSolidColorScrollbars() { |
298 DCHECK(settings().solid_color_scrollbars); | 264 DCHECK(settings().solid_color_scrollbars); |
299 | 265 |
300 LayerImpl* root_scroll = RootScrollLayer(); | 266 LayerImpl* root_scroll = RootScrollLayer(); |
301 DCHECK(root_scroll); | 267 DCHECK(root_scroll); |
302 DCHECK(IsActiveTree()); | 268 DCHECK(IsActiveTree()); |
303 | 269 |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
343 if (!root_layer()) | 309 if (!root_layer()) |
344 return; | 310 return; |
345 | 311 |
346 { | 312 { |
347 TRACE_EVENT2("cc", | 313 TRACE_EVENT2("cc", |
348 "LayerTreeImpl::UpdateDrawProperties", | 314 "LayerTreeImpl::UpdateDrawProperties", |
349 "IsActive", | 315 "IsActive", |
350 IsActiveTree(), | 316 IsActiveTree(), |
351 "SourceFrameNumber", | 317 "SourceFrameNumber", |
352 source_frame_number_); | 318 source_frame_number_); |
353 LayerImpl* page_scale_layer = | |
354 page_scale_layer_ ? page_scale_layer_ : RootContainerLayer(); | |
355 LayerTreeHostCommon::CalcDrawPropsImplInputs inputs( | 319 LayerTreeHostCommon::CalcDrawPropsImplInputs inputs( |
356 root_layer(), | 320 root_layer(), |
357 DrawViewportSize(), | 321 DrawViewportSize(), |
358 layer_tree_host_impl_->DrawTransform(), | 322 layer_tree_host_impl_->DrawTransform(), |
359 device_scale_factor(), | 323 device_scale_factor(), |
360 total_page_scale_factor(), | 324 total_page_scale_factor(), |
361 page_scale_layer, | 325 root_scroll_layer_ ? root_scroll_layer_->parent() : NULL, |
362 MaxTextureSize(), | 326 MaxTextureSize(), |
363 settings().can_use_lcd_text, | 327 settings().can_use_lcd_text, |
364 settings().layer_transforms_should_scale_layer_contents, | 328 settings().layer_transforms_should_scale_layer_contents, |
365 &render_surface_layer_list_); | 329 &render_surface_layer_list_); |
366 LayerTreeHostCommon::CalculateDrawProperties(&inputs); | 330 LayerTreeHostCommon::CalculateDrawProperties(&inputs); |
367 } | 331 } |
368 | 332 |
369 DCHECK(!needs_update_draw_properties_) << | 333 DCHECK(!needs_update_draw_properties_) << |
370 "CalcDrawProperties should not set_needs_update_draw_properties()"; | 334 "CalcDrawProperties should not set_needs_update_draw_properties()"; |
371 } | 335 } |
(...skipping 331 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
703 const std::vector<LayerImpl*> LayerTreeImpl::LayersWithCopyOutputRequest() | 667 const std::vector<LayerImpl*> LayerTreeImpl::LayersWithCopyOutputRequest() |
704 const { | 668 const { |
705 // Only the active tree needs to know about layers with copy requests, as | 669 // Only the active tree needs to know about layers with copy requests, as |
706 // they are aborted if not serviced during draw. | 670 // they are aborted if not serviced during draw. |
707 DCHECK(IsActiveTree()); | 671 DCHECK(IsActiveTree()); |
708 | 672 |
709 return layers_with_copy_output_request_; | 673 return layers_with_copy_output_request_; |
710 } | 674 } |
711 | 675 |
712 } // namespace cc | 676 } // namespace cc |
OLD | NEW |