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 <stddef.h> | 7 #include <stddef.h> |
| 8 #include <stdint.h> | 8 #include <stdint.h> |
| 9 | 9 |
| 10 #include <algorithm> | 10 #include <algorithm> |
| (...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 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 // TODO(sunxd): when we have a layer_id to property_tree index map in property |
| 148 // trees, use the transform_id parameter instead of looking for indices from | 148 // trees, use the transform_id parameter instead of looking for indices from |
| 149 // LayerImpls. | 149 // LayerImpls. |
| 150 void LayerTreeImpl::DidUpdateScrollOffset(int layer_id, int transform_id) { | 150 void LayerTreeImpl::DidUpdateScrollOffset(int layer_id) { |
| 151 DidUpdateScrollState(layer_id); | 151 DidUpdateScrollState(layer_id); |
| 152 TransformTree& transform_tree = property_trees()->transform_tree; | 152 TransformTree& transform_tree = property_trees()->transform_tree; |
| 153 ScrollTree& scroll_tree = property_trees()->scroll_tree; | 153 ScrollTree& scroll_tree = property_trees()->scroll_tree; |
| 154 int transform_id = -1; | |
| 154 | 155 |
| 155 // If pending tree topology changed and we still want to notify the pending | 156 // 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 | 157 // tree about scroll offset in the active tree, we may not find the |
| 157 // corresponding pending layer. | 158 // corresponding pending layer. |
| 158 if (LayerById(layer_id)) { | 159 if (LayerById(layer_id)) { |
| 159 transform_id = LayerById(layer_id)->transform_tree_index(); | 160 transform_id = LayerById(layer_id)->transform_tree_index(); |
|
sunxd
2016/09/16 14:34:57
Maybe we can move the TODO above here. As transfor
Ian Vollick
2016/09/16 15:09:44
Done.
| |
| 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 |