Chromium Code Reviews| 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; |