Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(4241)

Unified Diff: cc/trees/property_tree.cc

Issue 2753933005: cc: Move Layer Id to Node Map to Individual Property Tree Private (Closed)
Patch Set: renaming clean up Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « cc/trees/property_tree.h ('k') | cc/trees/property_tree_builder.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: cc/trees/property_tree.cc
diff --git a/cc/trees/property_tree.cc b/cc/trees/property_tree.cc
index f4f78d9f4a2b9c586a92a13028e53793b18420c0..b2ee4daa8170d1eab1bff1599f8802b688bec07e 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;
+ owning_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() &&
+ owning_layer_id_to_node_index == other.owning_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,46 +1702,25 @@ 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())
- 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]);
- float source_opacity = source_effect_node->opacity;
- float target_opacity = target_effect_node->opacity;
- if (source_opacity == target_opacity)
- continue;
- target_effect_node->opacity = source_opacity;
- target_tree->effect_tree.set_needs_update(true);
+ if (EffectNode* source_effect_node =
+ effect_tree.FindNodeFromOwningLayerId(id)) {
+ EffectNode* target_effect_node =
+ target_tree->effect_tree.FindNodeFromOwningLayerId(id);
+ float source_opacity = source_effect_node->opacity;
+ float target_opacity = target_effect_node->opacity;
+ if (source_opacity == target_opacity)
+ continue;
+ target_effect_node->opacity = source_opacity;
+ target_tree->effect_tree.set_needs_update(true);
+ }
}
}
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.SetOwningLayerIdForNode(nullptr, id);
+ clip_tree.SetOwningLayerIdForNode(nullptr, id);
+ scroll_tree.SetOwningLayerIdForNode(nullptr, id);
+ effect_tree.SetOwningLayerIdForNode(nullptr, id);
}
void PropertyTrees::UpdateChangeTracking() {
« no previous file with comments | « cc/trees/property_tree.h ('k') | cc/trees/property_tree_builder.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698