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