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 126 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
137 if (InnerViewportContainerLayer() && | 137 if (InnerViewportContainerLayer() && |
138 id == InnerViewportContainerLayer()->id()) | 138 id == InnerViewportContainerLayer()->id()) |
139 return true; | 139 return true; |
140 if (OuterViewportContainerLayer() && | 140 if (OuterViewportContainerLayer() && |
141 id == OuterViewportContainerLayer()->id()) | 141 id == OuterViewportContainerLayer()->id()) |
142 return true; | 142 return true; |
143 | 143 |
144 return false; | 144 return false; |
145 } | 145 } |
146 | 146 |
147 // TODO(sunxd): when we have a layer_id to property_tree index map in property | 147 void LayerTreeImpl::DidUpdateScrollOffset(int layer_id) { |
148 // trees, use the transform_id parameter instead of looking for indices from | |
149 // LayerImpls. | |
150 void LayerTreeImpl::DidUpdateScrollOffset(int layer_id, int transform_id) { | |
151 DidUpdateScrollState(layer_id); | 148 DidUpdateScrollState(layer_id); |
152 TransformTree& transform_tree = property_trees()->transform_tree; | 149 TransformTree& transform_tree = property_trees()->transform_tree; |
153 ScrollTree& scroll_tree = property_trees()->scroll_tree; | 150 ScrollTree& scroll_tree = property_trees()->scroll_tree; |
| 151 int transform_id = -1; |
154 | 152 |
155 // If pending tree topology changed and we still want to notify the pending | 153 // If pending tree topology changed and we still want to notify the pending |
156 // tree about scroll offset in the active tree, we may not find the | 154 // tree about scroll offset in the active tree, we may not find the |
157 // corresponding pending layer. | 155 // corresponding pending layer. |
158 if (LayerById(layer_id)) { | 156 if (LayerById(layer_id)) { |
| 157 // TODO(sunxd): when we have a layer_id to property_tree index map in |
| 158 // property trees, use the transform_id parameter instead of looking for |
| 159 // indices from LayerImpls. |
159 transform_id = LayerById(layer_id)->transform_tree_index(); | 160 transform_id = LayerById(layer_id)->transform_tree_index(); |
160 } else { | 161 } else { |
161 DCHECK(!IsActiveTree()); | 162 DCHECK(!IsActiveTree()); |
162 return; | 163 return; |
163 } | 164 } |
164 | 165 |
165 if (transform_id != -1) { | 166 if (transform_id != -1) { |
166 TransformNode* node = transform_tree.Node(transform_id); | 167 TransformNode* node = transform_tree.Node(transform_id); |
167 if (node->scroll_offset != scroll_tree.current_scroll_offset(layer_id)) { | 168 if (node->scroll_offset != scroll_tree.current_scroll_offset(layer_id)) { |
168 node->scroll_offset = scroll_tree.current_scroll_offset(layer_id); | 169 node->scroll_offset = scroll_tree.current_scroll_offset(layer_id); |
169 node->needs_local_transform_update = true; | 170 node->needs_local_transform_update = true; |
170 transform_tree.set_needs_update(true); | 171 transform_tree.set_needs_update(true); |
171 } | 172 } |
172 node->transform_changed = true; | 173 node->transform_changed = true; |
173 property_trees()->changed = true; | 174 property_trees()->changed = true; |
174 set_needs_update_draw_properties(); | 175 set_needs_update_draw_properties(); |
175 } | 176 } |
176 | 177 |
177 if (IsActiveTree() && layer_tree_host_impl_->pending_tree()) | 178 if (IsActiveTree() && layer_tree_host_impl_->pending_tree()) |
178 layer_tree_host_impl_->pending_tree()->DidUpdateScrollOffset(layer_id, | 179 layer_tree_host_impl_->pending_tree()->DidUpdateScrollOffset(layer_id); |
179 transform_id); | |
180 } | 180 } |
181 | 181 |
182 void LayerTreeImpl::DidUpdateScrollState(int layer_id) { | 182 void LayerTreeImpl::DidUpdateScrollState(int layer_id) { |
183 if (!IsActiveTree()) | 183 if (!IsActiveTree()) |
184 return; | 184 return; |
185 | 185 |
186 if (layer_id == Layer::INVALID_ID) | 186 if (layer_id == Layer::INVALID_ID) |
187 return; | 187 return; |
188 | 188 |
189 int scroll_layer_id, clip_layer_id; | 189 int scroll_layer_id, clip_layer_id; |
(...skipping 1882 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2072 | 2072 |
2073 void LayerTreeImpl::ResetAllChangeTracking() { | 2073 void LayerTreeImpl::ResetAllChangeTracking() { |
2074 layers_that_should_push_properties_.clear(); | 2074 layers_that_should_push_properties_.clear(); |
2075 // Iterate over all layers, including masks and replicas. | 2075 // Iterate over all layers, including masks and replicas. |
2076 for (auto& layer : *layers_) | 2076 for (auto& layer : *layers_) |
2077 layer->ResetChangeTracking(); | 2077 layer->ResetChangeTracking(); |
2078 property_trees_.ResetAllChangeTracking(); | 2078 property_trees_.ResetAllChangeTracking(); |
2079 } | 2079 } |
2080 | 2080 |
2081 } // namespace cc | 2081 } // namespace cc |
OLD | NEW |