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); |