| Index: cc/trees/property_tree_builder.cc
|
| diff --git a/cc/trees/property_tree_builder.cc b/cc/trees/property_tree_builder.cc
|
| index 8352ab88dc638ae942422cfa42709123ebb7a9ad..0db2ad706ae5e83e27cfebda3aebb86da5363b2f 100644
|
| --- a/cc/trees/property_tree_builder.cc
|
| +++ b/cc/trees/property_tree_builder.cc
|
| @@ -173,6 +173,8 @@ void AddTransformNodeIfNeeded(const DataForRecursion& data_from_ancestor,
|
| gfx::Vector2dF local_offset = layer->position().OffsetFromOrigin() +
|
| layer->transform().To2dTranslation();
|
| layer->set_offset_to_transform_parent(parent_offset + local_offset);
|
| + layer->set_should_flatten_transform_from_property_tree(
|
| + data_from_ancestor.should_flatten);
|
| layer->set_transform_tree_index(transform_parent->transform_tree_index());
|
| return;
|
| }
|
| @@ -188,8 +190,10 @@ void AddTransformNodeIfNeeded(const DataForRecursion& data_from_ancestor,
|
|
|
| node->data.scrolls = is_scrollable;
|
| node->data.flattens_inherited_transform = data_for_children->should_flatten;
|
| - node->data.flattens_local_transform = layer->should_flatten_transform();
|
| - data_for_children->should_flatten = false;
|
| +
|
| + // Surfaces inherently flatten transforms.
|
| + data_for_children->should_flatten =
|
| + layer->should_flatten_transform() || has_surface;
|
| node->data.target_id =
|
| data_from_ancestor.render_target->transform_tree_index();
|
| node->data.content_target_id =
|
| @@ -233,6 +237,9 @@ void AddTransformNodeIfNeeded(const DataForRecursion& data_from_ancestor,
|
| data_from_ancestor.transform_tree->UpdateTransforms(node->id);
|
|
|
| layer->set_offset_to_transform_parent(gfx::Vector2dF());
|
| +
|
| + // Flattening (if needed) will be handled by |node|.
|
| + layer->set_should_flatten_transform_from_property_tree(false);
|
| }
|
|
|
| void AddOpacityNodeIfNeeded(const DataForRecursion& data_from_ancestor,
|
|
|