Index: cc/trees/property_tree.cc |
diff --git a/cc/trees/property_tree.cc b/cc/trees/property_tree.cc |
index 4f2c950bf333125e0f3a0e44fd03ab079242d0e8..ce0a5679dc5a7b748a89e1ec42037e268c151c0d 100644 |
--- a/cc/trees/property_tree.cc |
+++ b/cc/trees/property_tree.cc |
@@ -668,65 +668,30 @@ void TransformTree::UpdateNodeAndAncestorsAreAnimatedOrInvertible( |
node->has_potential_animation || is_invertible; |
} |
-void TransformTree::SetContentsRootPostLocalTransform( |
- const gfx::Transform& transform, |
- gfx::PointF root_position) { |
- // The post local transform of the contents root node is set to the device |
- // transform with scale removed and is also offset by the root layer's |
- // position. The scale part of the device transform goes into the screen space |
- // scale stored on the root node. |
- gfx::Transform post_local = transform; |
- post_local.Translate(root_position.x(), root_position.y()); |
- |
- TransformNode* node = Node(kContentsRootNodeId); |
- if (node->post_local == post_local) |
+void TransformTree::SetDeviceTransform(const gfx::Transform& transform, |
+ gfx::PointF root_position) { |
+ gfx::Transform root_post_local = transform; |
+ TransformNode* node = Node(1); |
+ root_post_local.Scale(node->post_local_scale_factor, |
+ node->post_local_scale_factor); |
+ root_post_local.Translate(root_position.x(), root_position.y()); |
+ if (node->post_local == root_post_local) |
return; |
- node->post_local = post_local; |
- node->needs_local_transform_update = true; |
- set_needs_update(true); |
-} |
-void TransformTree::SetScreenSpaceScaleOnRootNode( |
- gfx::Vector2dF screen_space_scale_components) { |
- TransformNode* node = Node(kRootNodeId); |
- gfx::Transform to_screen; |
- to_screen.Scale(screen_space_scale_components.x(), |
- screen_space_scale_components.y()); |
- if (ToScreen(node->id) == to_screen) |
- return; |
- SetToScreen(node->id, to_screen); |
- gfx::Transform from_screen; |
- if (!ToScreen(node->id).GetInverse(&from_screen)) |
- node->ancestors_are_invertible = false; |
- SetFromScreen(node->id, from_screen); |
+ node->post_local = root_post_local; |
+ node->needs_local_transform_update = true; |
set_needs_update(true); |
} |
-void TransformTree::SetRootTransformsAndScales( |
- float device_scale_factor, |
- float page_scale_factor_for_root, |
- const gfx::Transform& device_transform, |
- gfx::PointF root_position) { |
+void TransformTree::SetDeviceTransformScaleFactor( |
+ const gfx::Transform& transform) { |
gfx::Vector2dF device_transform_scale_components = |
- MathUtil::ComputeTransform2dScaleComponents(device_transform, 1.f); |
+ MathUtil::ComputeTransform2dScaleComponents(transform, 1.f); |
// Not handling the rare case of different x and y device scale. |
device_transform_scale_factor_ = |
std::max(device_transform_scale_components.x(), |
device_transform_scale_components.y()); |
- gfx::Transform device_transform_without_scale = device_transform; |
- device_transform_without_scale.matrix().postScale( |
- 1.f / device_transform_scale_components.x(), |
- 1.f / device_transform_scale_components.y(), 1.f); |
- SetContentsRootPostLocalTransform(device_transform_without_scale, |
- root_position); |
- |
- gfx::Vector2dF screen_space_scale_components( |
- device_transform_scale_components.x() * device_scale_factor * |
- page_scale_factor_for_root, |
- device_transform_scale_components.y() * device_scale_factor * |
- page_scale_factor_for_root); |
- SetScreenSpaceScaleOnRootNode(screen_space_scale_components); |
} |
void TransformTree::UpdateInnerViewportContainerBoundsDelta() { |
@@ -987,7 +952,8 @@ void EffectTree::UpdateBackfaceVisibility(EffectNode* node, |
} |
void EffectTree::UpdateSurfaceContentsScale(EffectNode* effect_node) { |
- if (!effect_node->has_render_surface) { |
+ if (!effect_node->has_render_surface || |
+ effect_node->transform_id == kRootNodeId) { |
effect_node->surface_contents_scale = gfx::Vector2dF(1.0f, 1.0f); |
return; |
} |
@@ -2212,9 +2178,10 @@ DrawTransforms& PropertyTrees::GetDrawTransforms(int transform_id, |
} else if (transform_id > dest_id) { |
transform_tree.CombineTransformsBetween(transform_id, dest_id, |
&target_space_transform); |
- target_space_transform.matrix().postScale( |
- effect_node->surface_contents_scale.x(), |
- effect_node->surface_contents_scale.y(), 1.f); |
+ if (dest_id != TransformTree::kRootNodeId) |
+ target_space_transform.matrix().postScale( |
+ effect_node->surface_contents_scale.x(), |
+ effect_node->surface_contents_scale.y(), 1.f); |
data.transforms.to_valid = true; |
data.transforms.from_valid = false; |
data.transforms.might_be_invertible = true; |