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 <stddef.h> | 7 #include <stddef.h> |
8 #include <stdint.h> | 8 #include <stdint.h> |
9 | 9 |
10 #include <algorithm> | 10 #include <algorithm> |
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
99 | 99 |
100 void LayerTreeImpl::Shutdown() { | 100 void LayerTreeImpl::Shutdown() { |
101 if (root_layer_) | 101 if (root_layer_) |
102 RemoveLayer(root_layer_->id()); | 102 RemoveLayer(root_layer_->id()); |
103 root_layer_ = nullptr; | 103 root_layer_ = nullptr; |
104 } | 104 } |
105 | 105 |
106 void LayerTreeImpl::ReleaseResources() { | 106 void LayerTreeImpl::ReleaseResources() { |
107 if (root_layer_) { | 107 if (root_layer_) { |
108 LayerTreeHostCommon::CallFunctionForEveryLayer( | 108 LayerTreeHostCommon::CallFunctionForEveryLayer( |
109 this, [](LayerImpl* layer) { layer->ReleaseResources(); }, | 109 this, [](LayerImpl* layer) { layer->ReleaseResources(); }); |
110 CallFunctionLayerType::ALL_LAYERS); | |
111 } | 110 } |
112 } | 111 } |
113 | 112 |
114 void LayerTreeImpl::RecreateResources() { | 113 void LayerTreeImpl::RecreateResources() { |
115 if (root_layer_) { | 114 if (root_layer_) { |
116 LayerTreeHostCommon::CallFunctionForEveryLayer( | 115 LayerTreeHostCommon::CallFunctionForEveryLayer( |
117 this, [](LayerImpl* layer) { layer->RecreateResources(); }, | 116 this, [](LayerImpl* layer) { layer->RecreateResources(); }); |
118 CallFunctionLayerType::ALL_LAYERS); | |
119 } | 117 } |
120 } | 118 } |
121 | 119 |
122 bool LayerTreeImpl::IsViewportLayerId(int id) const { | 120 bool LayerTreeImpl::IsViewportLayerId(int id) const { |
123 if (id == inner_viewport_scroll_layer_id_ || | 121 if (id == inner_viewport_scroll_layer_id_ || |
124 id == outer_viewport_scroll_layer_id_) | 122 id == outer_viewport_scroll_layer_id_) |
125 return true; | 123 return true; |
126 if (InnerViewportContainerLayer() && | 124 if (InnerViewportContainerLayer() && |
127 id == InnerViewportContainerLayer()->id()) | 125 id == InnerViewportContainerLayer()->id()) |
128 return true; | 126 return true; |
(...skipping 419 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
548 | 546 |
549 void LayerTreeImpl::UpdatePropertyTreeScrollingAndAnimationFromMainThread() { | 547 void LayerTreeImpl::UpdatePropertyTreeScrollingAndAnimationFromMainThread() { |
550 // TODO(enne): This should get replaced by pulling out scrolling and | 548 // TODO(enne): This should get replaced by pulling out scrolling and |
551 // animations into their own trees. Then scrolls and animations would have | 549 // animations into their own trees. Then scrolls and animations would have |
552 // their own ways of synchronizing across commits. This occurs to push | 550 // their own ways of synchronizing across commits. This occurs to push |
553 // updates from scrolling deltas on the compositor thread that have occurred | 551 // updates from scrolling deltas on the compositor thread that have occurred |
554 // after begin frame and updates from animations that have ticked since begin | 552 // after begin frame and updates from animations that have ticked since begin |
555 // frame to a newly-committed property tree. | 553 // frame to a newly-committed property tree. |
556 if (!root_layer()) | 554 if (!root_layer()) |
557 return; | 555 return; |
558 LayerTreeHostCommon::CallFunctionForEveryLayer( | 556 LayerTreeHostCommon::CallFunctionForEveryLayer(this, [](LayerImpl* layer) { |
559 this, | 557 layer->UpdatePropertyTreeForScrollingAndAnimationIfNeeded(); |
560 [](LayerImpl* layer) { | 558 }); |
561 layer->UpdatePropertyTreeForScrollingAndAnimationIfNeeded(); | |
562 }, | |
563 CallFunctionLayerType::ALL_LAYERS); | |
564 } | 559 } |
565 | 560 |
566 void LayerTreeImpl::SetPageScaleOnActiveTree(float active_page_scale) { | 561 void LayerTreeImpl::SetPageScaleOnActiveTree(float active_page_scale) { |
567 DCHECK(IsActiveTree()); | 562 DCHECK(IsActiveTree()); |
568 if (page_scale_factor()->SetCurrent( | 563 if (page_scale_factor()->SetCurrent( |
569 ClampPageScaleFactorToLimits(active_page_scale))) { | 564 ClampPageScaleFactorToLimits(active_page_scale))) { |
570 DidUpdatePageScale(); | 565 DidUpdatePageScale(); |
571 if (PageScaleLayer()) { | 566 if (PageScaleLayer()) { |
572 draw_property_utils::UpdatePageScaleFactor( | 567 draw_property_utils::UpdatePageScaleFactor( |
573 property_trees(), PageScaleLayer(), current_page_scale_factor(), | 568 property_trees(), PageScaleLayer(), current_page_scale_factor(), |
(...skipping 492 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1066 layer_tree_host_impl_->SetFullRootLayerDamage(); | 1061 layer_tree_host_impl_->SetFullRootLayerDamage(); |
1067 next_activation_forces_redraw_ = false; | 1062 next_activation_forces_redraw_ = false; |
1068 } | 1063 } |
1069 | 1064 |
1070 // Always reset this flag on activation, as we would only have activated | 1065 // Always reset this flag on activation, as we would only have activated |
1071 // if we were in a good state. | 1066 // if we were in a good state. |
1072 layer_tree_host_impl_->ResetRequiresHighResToDraw(); | 1067 layer_tree_host_impl_->ResetRequiresHighResToDraw(); |
1073 | 1068 |
1074 if (root_layer()) { | 1069 if (root_layer()) { |
1075 LayerTreeHostCommon::CallFunctionForEveryLayer( | 1070 LayerTreeHostCommon::CallFunctionForEveryLayer( |
1076 this, [](LayerImpl* layer) { layer->DidBecomeActive(); }, | 1071 this, [](LayerImpl* layer) { layer->DidBecomeActive(); }); |
1077 CallFunctionLayerType::ALL_LAYERS); | |
1078 } | 1072 } |
1079 | 1073 |
1080 for (const auto& swap_promise : swap_promise_list_) | 1074 for (const auto& swap_promise : swap_promise_list_) |
1081 swap_promise->DidActivate(); | 1075 swap_promise->DidActivate(); |
1082 devtools_instrumentation::DidActivateLayerTree(layer_tree_host_impl_->id(), | 1076 devtools_instrumentation::DidActivateLayerTree(layer_tree_host_impl_->id(), |
1083 source_frame_number_); | 1077 source_frame_number_); |
1084 } | 1078 } |
1085 | 1079 |
1086 bool LayerTreeImpl::RequiresHighResToDraw() const { | 1080 bool LayerTreeImpl::RequiresHighResToDraw() const { |
1087 return layer_tree_host_impl_->RequiresHighResToDraw(); | 1081 return layer_tree_host_impl_->RequiresHighResToDraw(); |
(...skipping 996 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2084 } | 2078 } |
2085 | 2079 |
2086 void LayerTreeImpl::ResetAllChangeTracking(PropertyTrees::ResetFlags flag) { | 2080 void LayerTreeImpl::ResetAllChangeTracking(PropertyTrees::ResetFlags flag) { |
2087 layers_that_should_push_properties_.clear(); | 2081 layers_that_should_push_properties_.clear(); |
2088 for (auto* layer : *this) | 2082 for (auto* layer : *this) |
2089 layer->ResetChangeTracking(); | 2083 layer->ResetChangeTracking(); |
2090 property_trees_.ResetAllChangeTracking(flag); | 2084 property_trees_.ResetAllChangeTracking(flag); |
2091 } | 2085 } |
2092 | 2086 |
2093 } // namespace cc | 2087 } // namespace cc |
OLD | NEW |