[SCM] WebKit Debian packaging branch, webkit-1.2, updated. upstream/1.1.90-6072-g9a69373

oliver at apple.com oliver at apple.com
Thu Apr 8 01:10:14 UTC 2010


The following commit has been merged in the webkit-1.2 branch:
commit 85c038f97956ee83da328624ff0ce001cca0b18d
Author: oliver at apple.com <oliver at apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Sat Jan 16 00:16:23 2010 +0000

    2010-01-15  Oliver Hunt  <oliver at apple.com>
    
            Reviewed by Sam Weinig.
    
            Bad DOM performance in large SVG files
            https://bugs.webkit.org/show_bug.cgi?id=30055
    
            Improve the performance of the early culling check by avoiding save/restore
            of graphics state in culled case.
    
            * rendering/RenderPath.cpp:
            (WebCore::RenderPath::paint):
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@53349 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog
index 5bb792c..514120f 100644
--- a/WebCore/ChangeLog
+++ b/WebCore/ChangeLog
@@ -1,3 +1,16 @@
+2010-01-15  Oliver Hunt  <oliver at apple.com>
+
+        Reviewed by Sam Weinig.
+
+        Bad DOM performance in large SVG files
+        https://bugs.webkit.org/show_bug.cgi?id=30055
+
+        Improve the performance of the early culling check by avoiding save/restore
+        of graphics state in culled case.
+
+        * rendering/RenderPath.cpp:
+        (WebCore::RenderPath::paint):
+
 2010-01-15  Eric Seidel  <eric at webkit.org>
 
         No review, rolling out r53344.
diff --git a/WebCore/rendering/RenderPath.cpp b/WebCore/rendering/RenderPath.cpp
index 81cddfa..1d42d7e 100644
--- a/WebCore/rendering/RenderPath.cpp
+++ b/WebCore/rendering/RenderPath.cpp
@@ -216,18 +216,17 @@ void RenderPath::paint(PaintInfo& paintInfo, int, int)
     if (paintInfo.context->paintingDisabled() || style()->visibility() == HIDDEN || m_path.isEmpty())
         return;
 
-    PaintInfo childPaintInfo(paintInfo);
-    childPaintInfo.context->save();
-    applyTransformToPaintInfo(childPaintInfo, m_localTransform);
     FloatRect boundingBox = repaintRectInLocalCoordinates();
+    FloatRect nonLocalBoundingBox = m_localTransform.mapRect(boundingBox);
     // FIXME: The empty rect check is to deal with incorrect initial clip in renderSubtreeToImage
     // unfortunately fixing that problem is fairly complex unless we were willing to just futz the
     // rect to something "close enough"
-    if (!boundingBox.intersects(childPaintInfo.rect) && !childPaintInfo.rect.isEmpty()) {
-        childPaintInfo.context->restore();
+    if (!nonLocalBoundingBox.intersects(paintInfo.rect) && !paintInfo.rect.isEmpty())
         return;
-    }
 
+    PaintInfo childPaintInfo(paintInfo);
+    childPaintInfo.context->save();
+    applyTransformToPaintInfo(childPaintInfo, m_localTransform);
     SVGResourceFilter* filter = 0;
 
     if (childPaintInfo.phase == PaintPhaseForeground) {

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list