| Index: cc/trees/property_tree_builder.cc
|
| diff --git a/cc/trees/property_tree_builder.cc b/cc/trees/property_tree_builder.cc
|
| index 6f3f79235317488bb9b7f52dd887f3e34fad768d..8352ab88dc638ae942422cfa42709123ebb7a9ad 100644
|
| --- a/cc/trees/property_tree_builder.cc
|
| +++ b/cc/trees/property_tree_builder.cc
|
| @@ -33,6 +33,7 @@ struct DataForRecursion {
|
| float page_scale_factor;
|
| float device_scale_factor;
|
| bool in_subtree_of_page_scale_application_layer;
|
| + bool should_flatten;
|
| const gfx::Transform* device_transform;
|
| };
|
|
|
| @@ -124,13 +125,9 @@ void AddTransformNodeIfNeeded(const DataForRecursion& data_from_ancestor,
|
|
|
| const bool has_surface = !!layer->render_surface();
|
|
|
| - const bool flattening_change = layer->parent() &&
|
| - layer->should_flatten_transform() &&
|
| - !layer->parent()->should_flatten_transform();
|
| -
|
| bool requires_node = is_root || is_scrollable || has_significant_transform ||
|
| has_animated_transform || has_surface ||
|
| - is_page_scale_application_layer || flattening_change;
|
| + is_page_scale_application_layer;
|
|
|
| Layer* transform_parent = GetTransformParent(data_from_ancestor, layer);
|
|
|
| @@ -172,6 +169,7 @@ void AddTransformNodeIfNeeded(const DataForRecursion& data_from_ancestor,
|
| data_for_children->transform_tree_parent = layer;
|
|
|
| if (!requires_node) {
|
| + data_for_children->should_flatten |= layer->should_flatten_transform();
|
| gfx::Vector2dF local_offset = layer->position().OffsetFromOrigin() +
|
| layer->transform().To2dTranslation();
|
| layer->set_offset_to_transform_parent(parent_offset + local_offset);
|
| @@ -189,7 +187,9 @@ void AddTransformNodeIfNeeded(const DataForRecursion& data_from_ancestor,
|
| layer->set_transform_tree_index(node->id);
|
|
|
| node->data.scrolls = is_scrollable;
|
| - node->data.flattens = layer->should_flatten_transform();
|
| + 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;
|
| node->data.target_id =
|
| data_from_ancestor.render_target->transform_tree_index();
|
| node->data.content_target_id =
|
| @@ -316,6 +316,7 @@ void PropertyTreeBuilder::BuildPropertyTrees(
|
| data_for_recursion.page_scale_factor = page_scale_factor;
|
| data_for_recursion.device_scale_factor = device_scale_factor;
|
| data_for_recursion.in_subtree_of_page_scale_application_layer = false;
|
| + data_for_recursion.should_flatten = false;
|
| data_for_recursion.device_transform = &device_transform;
|
|
|
| ClipNode root_clip;
|
|
|