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 8ad44070ec7ffdf6d648c6356e6673153b9366d3..d9794fcddce501480e1230aba78c20973607a61e 100644 |
| --- a/cc/trees/property_tree_builder.cc |
| +++ b/cc/trees/property_tree_builder.cc |
| @@ -79,6 +79,9 @@ static bool RequiresClipNode(LayerType* layer, |
| if (!render_surface_applies_clip) |
| return false; |
| + if (!layer->transform().IsFlat()) |
|
ajuma
2015/08/04 15:37:19
What if the transform is animated, and becomes non
jaydasika
2015/08/04 15:38:53
That breaks a lot of unit tests.
ajuma
2015/08/04 15:40:26
It'd be good to understand why (since if there's s
|
| + return true; |
| + |
| bool axis_aligned_with_respect_to_parent = |
| data.transform_tree->Are2DAxisAligned(layer->transform_tree_index(), |
| parent_transform_id); |
| @@ -122,7 +125,7 @@ void AddClipNodeIfNeeded(const DataForRecursion<LayerType>& data_from_ancestor, |
| parent_id = 0; |
| if (!RequiresClipNode(layer, data_from_ancestor, parent->data.transform_id, |
| - data_for_children->ancestor_clips_subtree)) { |
| + ancestor_clips_subtree)) { |
| // Unclipped surfaces reset the clip rect. |
| data_for_children->clip_tree_parent = parent_id; |
| } else { |
| @@ -138,6 +141,9 @@ void AddClipNodeIfNeeded(const DataForRecursion<LayerType>& data_from_ancestor, |
| node.data.target_id = |
| data_for_children->render_target->transform_tree_index(); |
| node.owner_id = layer->id(); |
| + node.data.inherit_parent_target_space_clip = |
| + !data_for_children->ancestor_clips_subtree && |
| + layer->has_render_surface() && ancestor_clips_subtree; |
| data_for_children->clip_tree_parent = |
| data_for_children->clip_tree->Insert(node, parent_id); |