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