| Index: cc/trees/property_tree_builder.cc
|
| diff --git a/cc/trees/property_tree_builder.cc b/cc/trees/property_tree_builder.cc
|
| index 2ad73f16529b919037f8de37bb3761280031b17b..8d3f4ef189d58e50bcfa112fa2dfc9b1950eda07 100644
|
| --- a/cc/trees/property_tree_builder.cc
|
| +++ b/cc/trees/property_tree_builder.cc
|
| @@ -630,12 +630,10 @@ bool AddTransformNodeIfNeeded(
|
| }
|
|
|
| float post_local_scale_factor = 1.0f;
|
| - if (is_root)
|
| - post_local_scale_factor =
|
| - data_for_children->property_trees->transform_tree.device_scale_factor();
|
|
|
| if (is_page_scale_layer) {
|
| - post_local_scale_factor *= data_from_ancestor.page_scale_factor;
|
| + if (!is_root)
|
| + post_local_scale_factor *= data_from_ancestor.page_scale_factor;
|
| data_for_children->property_trees->transform_tree.set_page_scale_factor(
|
| data_from_ancestor.page_scale_factor);
|
| }
|
| @@ -646,10 +644,14 @@ bool AddTransformNodeIfNeeded(
|
| node->source_node_id = source_index;
|
| node->post_local_scale_factor = post_local_scale_factor;
|
| if (is_root) {
|
| - data_for_children->property_trees->transform_tree.SetDeviceTransform(
|
| - *data_from_ancestor.device_transform, layer->position());
|
| + float page_scale_factor_for_root =
|
| + is_page_scale_layer ? data_from_ancestor.page_scale_factor : 1.f;
|
| data_for_children->property_trees->transform_tree
|
| - .SetDeviceTransformScaleFactor(*data_from_ancestor.device_transform);
|
| + .SetRootTransformsAndScales(data_for_children->property_trees
|
| + ->transform_tree.device_scale_factor(),
|
| + page_scale_factor_for_root,
|
| + *data_from_ancestor.device_transform,
|
| + layer->position());
|
| } else {
|
| node->source_offset = source_offset;
|
| node->update_post_local_transform(layer->position(),
|
| @@ -1346,8 +1348,11 @@ void BuildPropertyTreesTopLevelInternal(
|
| draw_property_utils::UpdateElasticOverscroll(
|
| property_trees, overscroll_elasticity_layer, elastic_overscroll);
|
| property_trees->clip_tree.SetViewportClip(gfx::RectF(viewport));
|
| - property_trees->transform_tree.SetDeviceTransform(device_transform,
|
| - root_layer->position());
|
| + float page_scale_factor_for_root =
|
| + page_scale_layer == root_layer ? page_scale_factor : 1.f;
|
| + property_trees->transform_tree.SetRootTransformsAndScales(
|
| + device_scale_factor, page_scale_factor_for_root, device_transform,
|
| + root_layer->position());
|
| return;
|
| }
|
|
|
| @@ -1391,6 +1396,7 @@ void BuildPropertyTreesTopLevelInternal(
|
| root_clip.applies_local_clip = true;
|
| root_clip.clip = gfx::RectF(viewport);
|
| root_clip.transform_id = kRootPropertyTreeNodeId;
|
| + root_clip.target_transform_id = kRootPropertyTreeNodeId;
|
| data_for_recursion.clip_tree_parent =
|
| data_for_recursion.property_trees->clip_tree.Insert(
|
| root_clip, kRootPropertyTreeNodeId);
|
|
|