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/animation/scrollbar_animation_controller_linear_fade.h" | 10 #include "cc/animation/scrollbar_animation_controller_linear_fade.h" |
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
90 page_scale_delta_(1), | 90 page_scale_delta_(1), |
91 sent_page_scale_delta_(1), | 91 sent_page_scale_delta_(1), |
92 min_page_scale_factor_(0), | 92 min_page_scale_factor_(0), |
93 max_page_scale_factor_(0), | 93 max_page_scale_factor_(0), |
94 scrolling_layer_id_from_previous_tree_(0), | 94 scrolling_layer_id_from_previous_tree_(0), |
95 contents_textures_purged_(false), | 95 contents_textures_purged_(false), |
96 requires_high_res_to_draw_(false), | 96 requires_high_res_to_draw_(false), |
97 viewport_size_invalid_(false), | 97 viewport_size_invalid_(false), |
98 needs_update_draw_properties_(true), | 98 needs_update_draw_properties_(true), |
99 needs_full_tree_sync_(true), | 99 needs_full_tree_sync_(true), |
100 next_activation_forces_redraw_(false) {} | 100 next_activation_forces_redraw_(false), |
101 calculate_draw_properties_count_(0u) { | |
102 } | |
101 | 103 |
102 LayerTreeImpl::~LayerTreeImpl() { | 104 LayerTreeImpl::~LayerTreeImpl() { |
103 // Need to explicitly clear the tree prior to destroying this so that | 105 // Need to explicitly clear the tree prior to destroying this so that |
104 // the LayerTreeImpl pointer is still valid in the LayerImpl dtor. | 106 // the LayerTreeImpl pointer is still valid in the LayerImpl dtor. |
105 DCHECK(!root_layer_); | 107 DCHECK(!root_layer_); |
106 DCHECK(layers_with_copy_output_request_.empty()); | 108 DCHECK(layers_with_copy_output_request_.empty()); |
107 } | 109 } |
108 | 110 |
109 void LayerTreeImpl::Shutdown() { root_layer_.reset(); } | 111 void LayerTreeImpl::Shutdown() { root_layer_.reset(); } |
110 | 112 |
(...skipping 339 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
450 TRACE_EVENT2("cc", | 452 TRACE_EVENT2("cc", |
451 "LayerTreeImpl::UpdateDrawProperties", | 453 "LayerTreeImpl::UpdateDrawProperties", |
452 "IsActive", | 454 "IsActive", |
453 IsActiveTree(), | 455 IsActiveTree(), |
454 "SourceFrameNumber", | 456 "SourceFrameNumber", |
455 source_frame_number_); | 457 source_frame_number_); |
456 LayerImpl* page_scale_layer = | 458 LayerImpl* page_scale_layer = |
457 page_scale_layer_ ? page_scale_layer_ : InnerViewportContainerLayer(); | 459 page_scale_layer_ ? page_scale_layer_ : InnerViewportContainerLayer(); |
458 bool can_render_to_separate_surface = | 460 bool can_render_to_separate_surface = |
459 !output_surface()->ForcedDrawToSoftwareDevice(); | 461 !output_surface()->ForcedDrawToSoftwareDevice(); |
462 ++calculate_draw_properties_count_; | |
danakj
2014/05/02 23:45:26
Make this skip 0 on wraparound please.
vmpstr
2014/05/05 18:46:43
Done.
| |
460 LayerTreeHostCommon::CalcDrawPropsImplInputs inputs( | 463 LayerTreeHostCommon::CalcDrawPropsImplInputs inputs( |
461 root_layer(), | 464 root_layer(), |
462 DrawViewportSize(), | 465 DrawViewportSize(), |
463 layer_tree_host_impl_->DrawTransform(), | 466 layer_tree_host_impl_->DrawTransform(), |
464 device_scale_factor(), | 467 device_scale_factor(), |
465 total_page_scale_factor(), | 468 total_page_scale_factor(), |
466 page_scale_layer, | 469 page_scale_layer, |
467 MaxTextureSize(), | 470 MaxTextureSize(), |
468 settings().can_use_lcd_text, | 471 settings().can_use_lcd_text, |
469 can_render_to_separate_surface, | 472 can_render_to_separate_surface, |
470 settings().layer_transforms_should_scale_layer_contents, | 473 settings().layer_transforms_should_scale_layer_contents, |
471 &render_surface_layer_list_); | 474 &render_surface_layer_list_, |
475 calculate_draw_properties_count_); | |
472 LayerTreeHostCommon::CalculateDrawProperties(&inputs); | 476 LayerTreeHostCommon::CalculateDrawProperties(&inputs); |
473 } | 477 } |
474 | 478 |
475 { | 479 { |
476 TRACE_EVENT2("cc", | 480 TRACE_EVENT2("cc", |
477 "LayerTreeImpl::UpdateTilePriorities", | 481 "LayerTreeImpl::UpdateTilePriorities", |
478 "IsActive", | 482 "IsActive", |
479 IsActiveTree(), | 483 IsActiveTree(), |
480 "SourceFrameNumber", | 484 "SourceFrameNumber", |
481 source_frame_number_); | 485 source_frame_number_); |
482 // LayerIterator is used here instead of CallFunctionForSubtree to only | 486 // LayerIterator is used here instead of CallFunctionForSubtree to only |
483 // UpdateTilePriorities on layers that will be visible (and thus have valid | 487 // UpdateTilePriorities on layers that will be visible (and thus have valid |
484 // draw properties) and not because any ordering is required. | 488 // draw properties) and not because any ordering is required. |
485 typedef LayerIterator<LayerImpl> LayerIteratorType; | 489 typedef LayerIterator<LayerImpl> LayerIteratorType; |
486 LayerIteratorType end = LayerIteratorType::End(&render_surface_layer_list_); | 490 LayerIteratorType end = LayerIteratorType::End(&render_surface_layer_list_); |
487 for (LayerIteratorType it = | 491 for (LayerIteratorType it = |
488 LayerIteratorType::Begin(&render_surface_layer_list_); | 492 LayerIteratorType::Begin(&render_surface_layer_list_); |
489 it != end; | 493 it != end; |
490 ++it) { | 494 ++it) { |
491 if (!it.represents_itself()) | 495 if (!it.represents_itself()) |
492 continue; | 496 continue; |
497 | |
493 LayerImpl* layer = *it; | 498 LayerImpl* layer = *it; |
494 | 499 |
495 layer->UpdateTilePriorities(); | 500 layer->UpdateTilePriorities(); |
496 if (layer->mask_layer()) | 501 if (layer->mask_layer()) |
497 layer->mask_layer()->UpdateTilePriorities(); | 502 layer->mask_layer()->UpdateTilePriorities(); |
498 if (layer->replica_layer() && layer->replica_layer()->mask_layer()) | 503 if (layer->replica_layer() && layer->replica_layer()->mask_layer()) |
499 layer->replica_layer()->mask_layer()->UpdateTilePriorities(); | 504 layer->replica_layer()->mask_layer()->UpdateTilePriorities(); |
500 } | 505 } |
501 } | 506 } |
502 | 507 |
(...skipping 475 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
978 const std::vector<LayerImpl*>& LayerTreeImpl::LayersWithCopyOutputRequest() | 983 const std::vector<LayerImpl*>& LayerTreeImpl::LayersWithCopyOutputRequest() |
979 const { | 984 const { |
980 // Only the active tree needs to know about layers with copy requests, as | 985 // Only the active tree needs to know about layers with copy requests, as |
981 // they are aborted if not serviced during draw. | 986 // they are aborted if not serviced during draw. |
982 DCHECK(IsActiveTree()); | 987 DCHECK(IsActiveTree()); |
983 | 988 |
984 return layers_with_copy_output_request_; | 989 return layers_with_copy_output_request_; |
985 } | 990 } |
986 | 991 |
987 } // namespace cc | 992 } // namespace cc |
OLD | NEW |