Chromium Code Reviews| Index: cc/trees/property_tree.cc |
| diff --git a/cc/trees/property_tree.cc b/cc/trees/property_tree.cc |
| index ac8b60bb2b9184761af6a0461fbb4afffb5b3256..63e2500e57635abc5785c9aee836f319812d1618 100644 |
| --- a/cc/trees/property_tree.cc |
| +++ b/cc/trees/property_tree.cc |
| @@ -145,6 +145,7 @@ TransformNodeData::TransformNodeData() |
| affected_by_outer_viewport_bounds_delta_x(false), |
| affected_by_outer_viewport_bounds_delta_y(false), |
| in_subtree_of_page_scale_layer(false), |
| + transform_changed(false), |
| post_local_scale_factor(1.0f), |
| local_maximum_animation_target_scale(0.f), |
| local_starting_animation_scale(0.f), |
| @@ -187,6 +188,7 @@ bool TransformNodeData::operator==(const TransformNodeData& other) const { |
| other.affected_by_outer_viewport_bounds_delta_y && |
| in_subtree_of_page_scale_layer == |
| other.in_subtree_of_page_scale_layer && |
| + transform_changed == other.transform_changed && |
| post_local_scale_factor == other.post_local_scale_factor && |
| local_maximum_animation_target_scale == |
| other.local_maximum_animation_target_scale && |
| @@ -270,6 +272,7 @@ void TransformNodeData::ToProtobuf(proto::TreeNode* proto) const { |
| affected_by_outer_viewport_bounds_delta_y); |
| data->set_in_subtree_of_page_scale_layer(in_subtree_of_page_scale_layer); |
| + data->set_transform_changed(transform_changed); |
| data->set_post_local_scale_factor(post_local_scale_factor); |
| data->set_local_maximum_animation_target_scale( |
| local_maximum_animation_target_scale); |
| @@ -335,6 +338,7 @@ void TransformNodeData::FromProtobuf(const proto::TreeNode& proto) { |
| data.affected_by_outer_viewport_bounds_delta_y(); |
| in_subtree_of_page_scale_layer = data.in_subtree_of_page_scale_layer(); |
| + transform_changed = data.transform_changed(); |
| post_local_scale_factor = data.post_local_scale_factor(); |
| local_maximum_animation_target_scale = |
| data.local_maximum_animation_target_scale(); |
| @@ -609,6 +613,7 @@ void TransformTree::UpdateTransforms(int id) { |
| UpdateAnimationProperties(node, parent_node); |
| UpdateSnapping(node); |
| UpdateNodeAndAncestorsHaveIntegerTranslations(node, parent_node); |
| + UpdateTransformChanged(node, parent_node); |
| } |
| bool TransformTree::IsDescendant(int desc_id, int source_id) const { |
| @@ -968,6 +973,12 @@ void TransformTree::UpdateSnapping(TransformNode* node) { |
| node->data.scroll_snap = translation; |
| } |
| +void TransformTree::UpdateTransformChanged(TransformNode* node, |
| + TransformNode* parent_node) { |
| + if (parent_node && parent_node->data.transform_changed) |
| + node->data.transform_changed = true; |
|
ajuma
2016/02/12 23:57:03
There's another case to consider, I think: if node
jaydasika
2016/02/16 22:30:36
Done.
|
| +} |
| + |
| void TransformTree::SetDeviceTransform(const gfx::Transform& transform, |
| gfx::PointF root_position) { |
| gfx::Transform root_post_local = transform; |