| Index: third_party/WebKit/Source/core/paint/PaintPropertyTreeBuilder.cpp
|
| diff --git a/third_party/WebKit/Source/core/paint/PaintPropertyTreeBuilder.cpp b/third_party/WebKit/Source/core/paint/PaintPropertyTreeBuilder.cpp
|
| index 4430b0150fea03eddcb2864a791bd0fb96c5f401..5fabc8b6b331dd680bc71dcfeb766323e5534803 100644
|
| --- a/third_party/WebKit/Source/core/paint/PaintPropertyTreeBuilder.cpp
|
| +++ b/third_party/WebKit/Source/core/paint/PaintPropertyTreeBuilder.cpp
|
| @@ -265,40 +265,26 @@
|
| // called "subpixel accumulation". For more information, see
|
| // PaintLayer::subpixelAccumulation() and
|
| // PaintLayerPainter::paintFragmentByApplyingTransform.
|
| - LayoutPoint used_paint_offset(context.current.paint_offset.X().Round(),
|
| - context.current.paint_offset.Y().Round());
|
| - LayoutPoint remainder_paint_offset =
|
| - LayoutPoint(context.current.paint_offset - used_paint_offset);
|
| -
|
| - if (remainder_paint_offset != LayoutPoint()) {
|
| - // However, if the object has a non-translation transform, we can't pass
|
| - // subpixel offsets through the transform to descendants.
|
| - TransformationMatrix matrix;
|
| - object.StyleRef().ApplyTransform(
|
| - matrix, LayoutSize(), ComputedStyle::kExcludeTransformOrigin,
|
| - ComputedStyle::kIncludeMotionPath,
|
| - ComputedStyle::kIncludeIndependentTransformProperties);
|
| - if (!matrix.IsIdentityOrTranslation()) {
|
| - remainder_paint_offset = LayoutPoint();
|
| - used_paint_offset = context.current.paint_offset;
|
| - }
|
| - }
|
| + IntPoint rounded_paint_offset =
|
| + RoundedIntPoint(context.current.paint_offset);
|
| + LayoutPoint fractional_paint_offset =
|
| + LayoutPoint(context.current.paint_offset - rounded_paint_offset);
|
|
|
| force_subtree_update |= properties.UpdatePaintOffsetTranslation(
|
| context.current.transform,
|
| - TransformationMatrix().Translate(used_paint_offset.X().ToDouble(),
|
| - used_paint_offset.Y().ToDouble()),
|
| + TransformationMatrix().Translate(rounded_paint_offset.X(),
|
| + rounded_paint_offset.Y()),
|
| FloatPoint3D(), context.current.should_flatten_inherited_transform,
|
| context.current.rendering_context_id);
|
|
|
| context.current.transform = properties.PaintOffsetTranslation();
|
| - context.current.paint_offset = remainder_paint_offset;
|
| + context.current.paint_offset = fractional_paint_offset;
|
| if (RuntimeEnabledFeatures::rootLayerScrollingEnabled() &&
|
| object.IsLayoutView()) {
|
| context.absolute_position.transform = properties.PaintOffsetTranslation();
|
| context.fixed_position.transform = properties.PaintOffsetTranslation();
|
| - context.absolute_position.paint_offset = remainder_paint_offset;
|
| - context.fixed_position.paint_offset = remainder_paint_offset;
|
| + context.absolute_position.paint_offset = LayoutPoint();
|
| + context.fixed_position.paint_offset = LayoutPoint();
|
| }
|
| } else {
|
| if (auto* properties = object.GetMutableForPainting().PaintProperties())
|
|
|