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

Unified Diff: cc/trees/property_tree_builder.cc

Issue 1975623002: cc : Add LayerToPropertyTreeIndices map to PropertyTrees (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 7 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
« cc/trees/property_tree.cc ('K') | « cc/trees/property_tree.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: cc/trees/property_tree_builder.cc
diff --git a/cc/trees/property_tree_builder.cc b/cc/trees/property_tree_builder.cc
index d46d8692dec3c3a0872e637e5a695230d05b4330..d83446008da4b61c058ce6596b78b3cae931ea9c 100644
--- a/cc/trees/property_tree_builder.cc
+++ b/cc/trees/property_tree_builder.cc
@@ -59,6 +59,10 @@ struct DataForRecursion {
bool axis_align_since_render_target;
int sequence_number;
SkColor safe_opaque_background_color;
+ std::unordered_map<int, int>* transform_node_owner_to_node_map;
+ std::unordered_map<int, int>* effect_node_owner_to_node_map;
+ std::unordered_map<int, int>* clip_node_owner_to_node_map;
+ std::unordered_map<int, int>* scroll_node_owner_to_node_map;
ajuma 2016/05/13 14:38:53 DataForRecursion is starting to get pretty large.
jaydasika 2016/05/13 19:40:39 Acknowledged.
};
template <typename LayerType>
@@ -353,6 +357,7 @@ void AddClipNodeIfNeeded(const DataForRecursion<LayerType>& data_from_ancestor,
data_for_children->clip_tree_parent =
data_for_children->clip_tree->Insert(node, parent_id);
+ (*data_for_children->clip_node_owner_to_node_map)[layer->id()] = node.id;
}
layer->SetClipTreeIndex(data_for_children->clip_tree_parent);
@@ -507,6 +512,8 @@ bool AddTransformNodeIfNeeded(
TransformNode* node = data_for_children->transform_tree->back();
layer->SetTransformTreeIndex(node->id);
+ (*data_for_children->transform_node_owner_to_node_map)[layer->id()] =
+ node->id;
if (layer->mask_layer())
layer->mask_layer()->SetTransformTreeIndex(node->id);
@@ -861,6 +868,7 @@ bool AddEffectNodeIfNeeded(
data_for_children->effect_tree_parent =
data_for_children->effect_tree->Insert(node, parent_id);
layer->SetEffectTreeIndex(data_for_children->effect_tree_parent);
+ (*data_for_children->effect_node_owner_to_node_map)[layer->id()] = node.id;
if (should_create_render_surface) {
data_for_children->compound_transform_since_render_target =
gfx::Transform();
@@ -939,6 +947,7 @@ void AddScrollNodeIfNeeded(
node.data.main_thread_scrolling_reasons;
data_for_children->scroll_tree_parent_created_by_uninheritable_criteria =
scroll_node_uninheritable_criteria;
+ (*data_for_children->scroll_node_owner_to_node_map)[layer->id()] = node.id;
if (node.data.scrollable) {
data_for_children->scroll_tree->SetBaseScrollOffset(
@@ -1173,6 +1182,14 @@ void BuildPropertyTreesTopLevelInternal(
data_for_recursion.scroll_tree_parent_created_by_uninheritable_criteria =
true;
data_for_recursion.device_transform = &device_transform;
+ data_for_recursion.transform_node_owner_to_node_map =
+ &property_trees->transform_node_owner_to_node_map;
+ data_for_recursion.effect_node_owner_to_node_map =
+ &property_trees->effect_node_owner_to_node_map;
+ data_for_recursion.clip_node_owner_to_node_map =
+ &property_trees->clip_node_owner_to_node_map;
+ data_for_recursion.scroll_node_owner_to_node_map =
+ &property_trees->scroll_node_owner_to_node_map;
data_for_recursion.transform_tree->clear();
data_for_recursion.clip_tree->clear();
@@ -1184,6 +1201,10 @@ void BuildPropertyTreesTopLevelInternal(
data_for_recursion.transform_tree->set_device_scale_factor(
device_scale_factor);
data_for_recursion.safe_opaque_background_color = color;
+ data_for_recursion.transform_node_owner_to_node_map->clear();
+ data_for_recursion.effect_node_owner_to_node_map->clear();
+ data_for_recursion.clip_node_owner_to_node_map->clear();
+ data_for_recursion.scroll_node_owner_to_node_map->clear();
ClipNode root_clip;
root_clip.data.resets_clip = true;
« cc/trees/property_tree.cc ('K') | « cc/trees/property_tree.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698