Chromium Code Reviews| Index: cc/trees/property_tree.cc |
| diff --git a/cc/trees/property_tree.cc b/cc/trees/property_tree.cc |
| index f4f78d9f4a2b9c586a92a13028e53793b18420c0..14c195dda28d336e5dbd99acd43ee371928e6dc5 100644 |
| --- a/cc/trees/property_tree.cc |
| +++ b/cc/trees/property_tree.cc |
| @@ -71,6 +71,7 @@ void PropertyTree<T>::clear() { |
| nodes_.push_back(T()); |
| back()->id = kRootNodeId; |
| back()->parent_id = kInvalidNodeId; |
| + layer_id_to_node_index.clear(); |
| #if DCHECK_IS_ON() |
| PropertyTree<T> tree; |
| @@ -80,7 +81,8 @@ void PropertyTree<T>::clear() { |
| template <typename T> |
| bool PropertyTree<T>::operator==(const PropertyTree<T>& other) const { |
| - return nodes_ == other.nodes() && needs_update_ == other.needs_update(); |
| + return nodes_ == other.nodes() && needs_update_ == other.needs_update() && |
| + layer_id_to_node_index == other.layer_id_to_node_index; |
| } |
| template <typename T> |
| @@ -1597,11 +1599,6 @@ bool PropertyTrees::operator==(const PropertyTrees& other) const { |
| return transform_tree == other.transform_tree && |
| effect_tree == other.effect_tree && clip_tree == other.clip_tree && |
| scroll_tree == other.scroll_tree && |
| - layer_id_to_transform_node_index == |
| - other.layer_id_to_transform_node_index && |
| - layer_id_to_effect_node_index == other.layer_id_to_effect_node_index && |
| - layer_id_to_clip_node_index == other.layer_id_to_clip_node_index && |
| - layer_id_to_scroll_node_index == other.layer_id_to_scroll_node_index && |
| element_id_to_effect_node_index == |
| other.element_id_to_effect_node_index && |
| element_id_to_scroll_node_index == |
| @@ -1623,12 +1620,8 @@ PropertyTrees& PropertyTrees::operator=(const PropertyTrees& from) { |
| effect_tree = from.effect_tree; |
| clip_tree = from.clip_tree; |
| scroll_tree = from.scroll_tree; |
| - layer_id_to_transform_node_index = from.layer_id_to_transform_node_index; |
| - layer_id_to_effect_node_index = from.layer_id_to_effect_node_index; |
| always_use_active_tree_opacity_effect_ids = |
| from.always_use_active_tree_opacity_effect_ids; |
| - layer_id_to_clip_node_index = from.layer_id_to_clip_node_index; |
| - layer_id_to_scroll_node_index = from.layer_id_to_scroll_node_index; |
| element_id_to_effect_node_index = from.element_id_to_effect_node_index; |
| element_id_to_scroll_node_index = from.element_id_to_scroll_node_index; |
| element_id_to_transform_node_index = from.element_id_to_transform_node_index; |
| @@ -1658,10 +1651,6 @@ void PropertyTrees::clear() { |
| clip_tree.clear(); |
| effect_tree.clear(); |
| scroll_tree.clear(); |
| - layer_id_to_transform_node_index.clear(); |
| - layer_id_to_effect_node_index.clear(); |
| - layer_id_to_clip_node_index.clear(); |
| - layer_id_to_scroll_node_index.clear(); |
| element_id_to_effect_node_index.clear(); |
| element_id_to_scroll_node_index.clear(); |
| element_id_to_transform_node_index.clear(); |
| @@ -1713,13 +1702,11 @@ void PropertyTrees::SetInnerViewportScrollBoundsDelta( |
| void PropertyTrees::PushOpacityIfNeeded(PropertyTrees* target_tree) { |
| for (int id : target_tree->always_use_active_tree_opacity_effect_ids) { |
| - if (layer_id_to_effect_node_index.find(id) == |
| - layer_id_to_effect_node_index.end()) |
| + if (!effect_tree.FindNodeFromId(id)) |
|
ajuma
2017/03/16 17:15:32
If we save the result of this call we can avoid th
|
| continue; |
| - EffectNode* source_effect_node = |
| - effect_tree.Node(layer_id_to_effect_node_index[id]); |
| - EffectNode* target_effect_node = target_tree->effect_tree.Node( |
| - target_tree->layer_id_to_effect_node_index[id]); |
| + EffectNode* source_effect_node = effect_tree.FindNodeFromId(id); |
| + EffectNode* target_effect_node = |
| + target_tree->effect_tree.FindNodeFromId(id); |
| float source_opacity = source_effect_node->opacity; |
| float target_opacity = target_effect_node->opacity; |
| if (source_opacity == target_opacity) |
| @@ -1730,29 +1717,10 @@ void PropertyTrees::PushOpacityIfNeeded(PropertyTrees* target_tree) { |
| } |
| void PropertyTrees::RemoveIdFromIdToIndexMaps(int id) { |
| - layer_id_to_transform_node_index.erase(id); |
| - layer_id_to_effect_node_index.erase(id); |
| - layer_id_to_clip_node_index.erase(id); |
| - layer_id_to_scroll_node_index.erase(id); |
| -} |
| - |
| -bool PropertyTrees::IsInIdToIndexMap(TreeType tree_type, int id) { |
| - std::unordered_map<int, int>* id_to_index_map = nullptr; |
| - switch (tree_type) { |
| - case TRANSFORM: |
| - id_to_index_map = &layer_id_to_transform_node_index; |
| - break; |
| - case EFFECT: |
| - id_to_index_map = &layer_id_to_effect_node_index; |
| - break; |
| - case CLIP: |
| - id_to_index_map = &layer_id_to_clip_node_index; |
| - break; |
| - case SCROLL: |
| - id_to_index_map = &layer_id_to_scroll_node_index; |
| - break; |
| - } |
| - return id_to_index_map->find(id) != id_to_index_map->end(); |
| + transform_tree.InsertOwningIdForNode(nullptr, id); |
| + clip_tree.InsertOwningIdForNode(nullptr, id); |
| + scroll_tree.InsertOwningIdForNode(nullptr, id); |
| + effect_tree.InsertOwningIdForNode(nullptr, id); |
| } |
| void PropertyTrees::UpdateChangeTracking() { |