Changeset 167538 in webkit


Ignore:
Timestamp:
Apr 19, 2014 10:48:08 AM (10 years ago)
Author:
Alan Bujtas
Message:

https://bugs.webkit.org/show_bug.cgi?id=131594
Subpixel rendering: WK1: Wrong repaint rect is calculated when layer has non-compositing transform.

Reviewed by Simon Fraser.

We need to snap the repaint rect for transformed object the same way when we paint them.

Test: fast/repaint/hidpi-wrong-repaint-rect-when-parent-has-noncompositing-transform.html

Source/WebCore:

  • rendering/RenderBox.cpp:

(WebCore::RenderBox::computeRectForRepaint):

LayoutTests:

  • fast/repaint/hidpi-wrong-repaint-rect-when-parent-has-noncompositing-transform-expected.txt: Added.
  • fast/repaint/hidpi-wrong-repaint-rect-when-parent-has-noncompositing-transform.html: Added.
Location:
trunk
Files:
2 added
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r167533 r167538  
     12014-04-19  Zalan Bujtas  <zalan@apple.com>
     2
     3        https://bugs.webkit.org/show_bug.cgi?id=131594
     4        Subpixel rendering: WK1: Wrong repaint rect is calculated when layer has non-compositing transform.
     5
     6        Reviewed by Simon Fraser.
     7
     8        We need to snap the repaint rect for transformed object the same way when we paint them.
     9
     10        Test: fast/repaint/hidpi-wrong-repaint-rect-when-parent-has-noncompositing-transform.html
     11
     12        * fast/repaint/hidpi-wrong-repaint-rect-when-parent-has-noncompositing-transform-expected.txt: Added.
     13        * fast/repaint/hidpi-wrong-repaint-rect-when-parent-has-noncompositing-transform.html: Added.
     14
    1152014-04-18  Dean Jackson  <dino@apple.com>
    216
  • trunk/LayoutTests/platform/mac/TestExpectations

    r167533 r167538  
    13091309# Non-uniform scaling context.
    13101310webkit.org/b/128081 fast/events/page-scaled-mouse-click-iframe.html
     1311# repaintRectsAsText reports different repaintrects on ML
     1312webkit.org/b/131887 [ MountainLion ] fast/repaint/hidpi-wrong-repaint-rect-when-parent-has-noncompositing-transform.html [ Failure ]
    13111313# End of subpixel failures.
    13121314
  • trunk/Source/WebCore/ChangeLog

    r167535 r167538  
     12014-04-19  Zalan Bujtas  <zalan@apple.com>
     2
     3        https://bugs.webkit.org/show_bug.cgi?id=131594
     4        Subpixel rendering: WK1: Wrong repaint rect is calculated when layer has non-compositing transform.
     5
     6        Reviewed by Simon Fraser.
     7
     8        We need to snap the repaint rect for transformed object the same way when we paint them.
     9
     10        Test: fast/repaint/hidpi-wrong-repaint-rect-when-parent-has-noncompositing-transform.html
     11
     12        * rendering/RenderBox.cpp:
     13        (WebCore::RenderBox::computeRectForRepaint):
     14
    1152014-04-18  Simon Fraser  <simon.fraser@apple.com>
    216
  • trunk/Source/WebCore/rendering/RenderBox.cpp

    r167489 r167538  
    20822082
    20832083        if (layer() && layer()->transform())
    2084             rect = layer()->transform()->mapRect(pixelSnappedIntRect(rect));
     2084            rect = LayoutRect(layer()->transform()->mapRect(pixelSnappedForPainting(rect, document().deviceScaleFactor())));
    20852085
    20862086        // We can't trust the bits on RenderObject, because this might be called while re-resolving style.
     
    21332133    if (hasLayer() && layer()->transform()) {
    21342134        fixed = position == FixedPosition;
    2135         rect = layer()->transform()->mapRect(pixelSnappedIntRect(rect));
     2135        rect = LayoutRect(layer()->transform()->mapRect(pixelSnappedForPainting(rect, document().deviceScaleFactor())));
    21362136        topLeft = rect.location();
    21372137        topLeft.move(locationOffset());
  • trunk/Source/WebCore/rendering/RenderObject.cpp

    r167444 r167538  
    12671267        bool viewHasCompositedLayer = v.hasLayer() && v.layer()->isComposited();
    12681268        if (!viewHasCompositedLayer || v.layer()->backing()->paintsIntoWindow()) {
    1269             v.repaintViewRectangle(viewHasCompositedLayer && v.layer()->transform() ? v.layer()->transform()->mapRect(r) : r);
     1269            v.repaintViewRectangle(viewHasCompositedLayer && v.layer()->transform() ? LayoutRect(v.layer()->transform()->mapRect(pixelSnappedForPainting(r, document().deviceScaleFactor()))) : r);
    12701270            return;
    12711271        }
  • trunk/Source/WebCore/rendering/RenderView.cpp

    r167483 r167538  
    635635    // Apply our transform if we have one (because of full page zooming).
    636636    if (!repaintContainer && layer() && layer()->transform())
    637         rect = layer()->transform()->mapRect(rect);
     637        rect = LayoutRect(layer()->transform()->mapRect(pixelSnappedForPainting(rect, document().deviceScaleFactor())));
    638638}
    639639
Note: See TracChangeset for help on using the changeset viewer.