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