Prevent skipped repaints for children of inner SVG elements
authorpdr@google.com <pdr@google.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 1 Feb 2013 22:38:50 +0000 (22:38 +0000)
committerpdr@google.com <pdr@google.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 1 Feb 2013 22:38:50 +0000 (22:38 +0000)
commit90c96ef1a7a7d852d67ef945632d4f61b4706b8c
treeff88e13d8dc323ec1a6bf89a2726ded4e9b1f55b
parentd91728bbebbc7ba51e2cdf4abe91819df07dd5b7
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.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@141645 268f45cc-cd09-0410-ab3c-d52691b4dbfc
LayoutTests/ChangeLog
LayoutTests/platform/chromium/TestExpectations
LayoutTests/platform/efl/TestExpectations
LayoutTests/platform/mac/TestExpectations
LayoutTests/platform/qt/TestExpectations
LayoutTests/platform/win/TestExpectations
LayoutTests/svg/repaint/svgsvgelement-repaint-children-expected.png [new file with mode: 0644]
LayoutTests/svg/repaint/svgsvgelement-repaint-children-expected.txt [new file with mode: 0644]
LayoutTests/svg/repaint/svgsvgelement-repaint-children.html [new file with mode: 0644]
Source/WebCore/ChangeLog
Source/WebCore/rendering/svg/RenderSVGViewportContainer.cpp