Chromium Code Reviews| 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 |