Title: [152212] trunk/Source/WebCore
Revision
152212
Author
[email protected]
Date
2013-06-29 13:19:43 -0700 (Sat, 29 Jun 2013)

Log Message

Avoid doing work in RenderBox::outlineBoundsForRepaint() when the repaintContainer is this
https://bugs.webkit.org/show_bug.cgi?id=118215

Reviewed by Tim Horton.

When the RenderGeometryMap code path was added, RenderBox::outlineBoundsForRepaint()
actually got slower if no coordinate mapping was needed. So avoid doing work when
we can, including avoiding the FloatQuad construction.

Speeds up scrolling overflow:scroll areas with large numbers of layer children.

* rendering/RenderBox.cpp:
(WebCore::RenderBox::outlineBoundsForRepaint):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (152211 => 152212)


--- trunk/Source/WebCore/ChangeLog	2013-06-29 15:49:55 UTC (rev 152211)
+++ trunk/Source/WebCore/ChangeLog	2013-06-29 20:19:43 UTC (rev 152212)
@@ -1,3 +1,19 @@
+2013-06-29  Simon Fraser  <[email protected]>
+
+        Avoid doing work in RenderBox::outlineBoundsForRepaint() when the repaintContainer is this
+        https://bugs.webkit.org/show_bug.cgi?id=118215
+
+        Reviewed by Tim Horton.
+
+        When the RenderGeometryMap code path was added, RenderBox::outlineBoundsForRepaint()
+        actually got slower if no coordinate mapping was needed. So avoid doing work when
+        we can, including avoiding the FloatQuad construction.
+        
+        Speeds up scrolling overflow:scroll areas with large numbers of layer children.
+
+        * rendering/RenderBox.cpp:
+        (WebCore::RenderBox::outlineBoundsForRepaint):
+
 2013-06-29  Kangil Han  <[email protected]>
 
         Adopt is/toHTMLOptGroupElement for code cleanup

Modified: trunk/Source/WebCore/rendering/RenderBox.cpp (152211 => 152212)


--- trunk/Source/WebCore/rendering/RenderBox.cpp	2013-06-29 15:49:55 UTC (rev 152211)
+++ trunk/Source/WebCore/rendering/RenderBox.cpp	2013-06-29 20:19:43 UTC (rev 152212)
@@ -537,14 +537,16 @@
     LayoutRect box = borderBoundingBox();
     adjustRectForOutlineAndShadow(box);
 
-    FloatQuad containerRelativeQuad;
-    if (geometryMap)
-        containerRelativeQuad = geometryMap->mapToContainer(box, repaintContainer);
-    else
-        containerRelativeQuad = localToContainerQuad(FloatRect(box), repaintContainer);
+    if (repaintContainer != this) {
+        FloatQuad containerRelativeQuad;
+        if (geometryMap)
+            containerRelativeQuad = geometryMap->mapToContainer(box, repaintContainer);
+        else
+            containerRelativeQuad = localToContainerQuad(FloatRect(box), repaintContainer);
 
-    box = containerRelativeQuad.enclosingBoundingBox();
-
+        box = containerRelativeQuad.enclosingBoundingBox();
+    }
+    
     // FIXME: layoutDelta needs to be applied in parts before/after transforms and
     // repaint containers. https://bugs.webkit.org/show_bug.cgi?id=23308
     box.move(view()->layoutDelta());
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to