| Index: cc/trees/property_tree.cc
|
| diff --git a/cc/trees/property_tree.cc b/cc/trees/property_tree.cc
|
| index 34f8c4989fe2c35cb4c14349a1a029702fcd8bf6..764a318ba3d2255558bbe984b569fecbeb2f8bf2 100644
|
| --- a/cc/trees/property_tree.cc
|
| +++ b/cc/trees/property_tree.cc
|
| @@ -441,8 +441,10 @@ EffectNodeData::EffectNodeData()
|
| has_animated_opacity(false),
|
| effect_changed(false),
|
| num_copy_requests_in_subtree(0),
|
| + has_unclipped_descendants(false),
|
| transform_id(0),
|
| - clip_id(0) {}
|
| + clip_id(0),
|
| + target_id(0) {}
|
|
|
| EffectNodeData::EffectNodeData(const EffectNodeData& other) = default;
|
|
|
| @@ -596,6 +598,29 @@ bool TransformTree::ComputeTransform(int source_id,
|
| return CombineInversesBetween(source_id, dest_id, transform);
|
| }
|
|
|
| +bool TransformTree::ComputeTransformWithDifferenceInSublayerScale(
|
| + int source_id,
|
| + int dest_id,
|
| + gfx::Transform* transform) const {
|
| + bool success = ComputeTransform(source_id, dest_id, transform);
|
| +
|
| + const TransformNode* dest_node = Node(dest_id);
|
| + if (!dest_node->data.needs_sublayer_scale)
|
| + return success;
|
| +
|
| + transform->matrix().postScale(dest_node->data.sublayer_scale.x(),
|
| + dest_node->data.sublayer_scale.y(), 1.f);
|
| +
|
| + const TransformNode* source_node = Node(source_id);
|
| + if (source_node->data.sublayer_scale.x() > 0 &&
|
| + source_node->data.sublayer_scale.y() > 0) {
|
| + transform->Scale(1.f / source_node->data.sublayer_scale.x(),
|
| + 1.f / source_node->data.sublayer_scale.y());
|
| + }
|
| +
|
| + return success;
|
| +}
|
| +
|
| bool TransformTree::ComputeTransformWithDestinationSublayerScale(
|
| int source_id,
|
| int dest_id,
|
|
|