Changeset 141645 in webkit


Ignore:
Timestamp:
Feb 1, 2013 2:38:50 PM (11 years ago)
Author:
pdr@google.com
Message:

Prevent skipped repaints for children of inner SVG elements
https://bugs.webkit.org/show_bug.cgi?id=108429

Reviewed by Eric Seidel.

Source/WebCore:

This patch fixes a bug caused by r108699 and r133786 where we would not repaint children
of inner SVG elements because "m_didTransformToRootUpdate" was never reset on viewport
containers. The stale m_didTransformToRootUpdate variable caused us to skip child repaints.

I verified that the Robohornet SVG benchmark performance gains in r133786 are not regressed
with this patch.

Test: svg/repaint/svgsvgelement-repaint-children.html

  • rendering/svg/RenderSVGViewportContainer.cpp:

(WebCore::RenderSVGViewportContainer::calcViewport):

This can be removed because setNeedsTransformUpdate() will set m_needsTransformUpdate.

(WebCore::RenderSVGViewportContainer::calculateLocalTransform):

This change is straightforward and is similar to the equivalent assignment in
RenderSVGTransformableContainer::calculateLocalTransform().

LayoutTests:

Need to update expectations for a single file (just a 1px difference).

  • platform/chromium/TestExpectations:
  • platform/efl/TestExpectations:
  • platform/mac/TestExpectations:
  • platform/qt/TestExpectations:
  • platform/win/TestExpectations:
  • svg/repaint/svgsvgelement-repaint-children-expected.png: Added.
  • svg/repaint/svgsvgelement-repaint-children-expected.txt: Added.
  • svg/repaint/svgsvgelement-repaint-children.html: Added.
Location:
trunk
Files:
3 added
8 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r141644 r141645  
     12013-02-01  Philip Rogers  <pdr@google.com>
     2
     3        Prevent skipped repaints for children of inner SVG elements
     4        https://bugs.webkit.org/show_bug.cgi?id=108429
     5
     6        Reviewed by Eric Seidel.
     7
     8        Need to update expectations for a single file (just a 1px difference).
     9
     10        * platform/chromium/TestExpectations:
     11        * platform/efl/TestExpectations:
     12        * platform/mac/TestExpectations:
     13        * platform/qt/TestExpectations:
     14        * platform/win/TestExpectations:
     15        * svg/repaint/svgsvgelement-repaint-children-expected.png: Added.
     16        * svg/repaint/svgsvgelement-repaint-children-expected.txt: Added.
     17        * svg/repaint/svgsvgelement-repaint-children.html: Added.
     18
    1192013-02-01  Philip Rogers  <pdr@google.com>
    220
  • trunk/LayoutTests/platform/chromium/TestExpectations

    r141644 r141645  
    35693569webkit.org/b/94242 [ Android Debug ] media/track/track-cues-sorted-before-dispatch.html [ Pass Timeout ]
    35703570
     3571# Needs a rebaseline after WK108429 lands.
     3572webkit.org/b/108429 svg/custom/text-ctm.svg [ Pass Failure ]
     3573webkit.org/b/108429 svg/repaint/svgsvgelement-repaint-children.html [ Pass Failure ]
     3574
    35713575# Chromium still has the CC toggle button, not the menu of tracks.
    35723576webkit.org/b/101670 media/video-controls-captions-trackmenu.html [ Skip ]
  • trunk/LayoutTests/platform/efl/TestExpectations

    r141624 r141645  
    18421842webkit.org/b/107476 fast/block/margin-collapse/empty-clear-blocks.html [ Failure ]
    18431843
     1844# Needs a rebaseline after WK108429 lands.
     1845webkit.org/b/108429 svg/custom/text-ctm.svg [ Pass Failure ]
     1846
    18441847# New ruby selection test (in r140613) fails to render correctly, not generating an expected result
    18451848webkit.org/b/108315 fast/ruby/select-ruby.html [ Missing ]
  • trunk/LayoutTests/platform/mac/TestExpectations

    r141638 r141645  
    11541154webkit.org/b/104595 fast/css/empty-generated-content.html [ Failure ]
    11551155
     1156# Needs a rebaseline after WK108429 lands.
     1157webkit.org/b/108429 svg/custom/text-ctm.svg [ Pass Failure ]
     1158
    11561159webkit.org/b/93247 [ Debug ] fast/lists/list-marker-remove-crash.html [ Crash ]
    11571160
  • trunk/LayoutTests/platform/qt/TestExpectations

    r141621 r141645  
    24462446webkit.org/b/99870 svg/custom/pattern-scaling.svg [ Pass ImageOnlyFailure Missing ]
    24472447
     2448# Needs a rebaseline after WK108429 lands.
     2449webkit.org/b/108429 svg/custom/text-ctm.svg [ Pass Failure ]
     2450
    24482451# Disable webaudio codec tests, including proprietary codecs.
    24492452webkit.org/b/88794 webaudio/codec-tests
  • trunk/LayoutTests/platform/win/TestExpectations

    r141629 r141645  
    20542054fast/forms/time-multiple-fields
    20552055fast/forms/week-multiple-fields
     2056
     2057# Needs a rebaseline after WK108429 lands.
     2058svg/custom/text-ctm.svg
    20562059
    20572060# Require rebaseline after https://bugs.webkit.org/show_bug.cgi?id=84286
  • trunk/Source/WebCore/ChangeLog

    r141637 r141645  
     12013-02-01  Philip Rogers  <pdr@google.com>
     2
     3        Prevent skipped repaints for children of inner SVG elements
     4        https://bugs.webkit.org/show_bug.cgi?id=108429
     5
     6        Reviewed by Eric Seidel.
     7
     8        This patch fixes a bug caused by r108699 and r133786 where we would not repaint children
     9        of inner SVG elements because "m_didTransformToRootUpdate" was never reset on viewport
     10        containers. The stale m_didTransformToRootUpdate variable caused us to skip child repaints.
     11
     12        I verified that the Robohornet SVG benchmark performance gains in r133786 are not regressed
     13        with this patch.
     14
     15        Test: svg/repaint/svgsvgelement-repaint-children.html
     16
     17        * rendering/svg/RenderSVGViewportContainer.cpp:
     18        (WebCore::RenderSVGViewportContainer::calcViewport):
     19
     20            This can be removed because setNeedsTransformUpdate() will set m_needsTransformUpdate.
     21
     22        (WebCore::RenderSVGViewportContainer::calculateLocalTransform):
     23
     24            This change is straightforward and is similar to the equivalent assignment in
     25            RenderSVGTransformableContainer::calculateLocalTransform().
     26
    1272013-02-01  Philip Rogers  <pdr@google.com>
    228
  • trunk/Source/WebCore/rendering/svg/RenderSVGViewportContainer.cpp

    r109097 r141645  
    115115
    116116    if (oldViewport != m_viewport) {
    117         m_didTransformToRootUpdate = true;
    118117        setNeedsBoundariesUpdate();
    119118        setNeedsTransformUpdate();
     
    123122bool RenderSVGViewportContainer::calculateLocalTransform()
    124123{
     124    m_didTransformToRootUpdate = m_needsTransformUpdate || SVGRenderSupport::transformToRootChanged(parent());
    125125    if (!m_needsTransformUpdate)
    126126        return false;
Note: See TracChangeset for help on using the changeset viewer.