Changeset 152212 in webkit


Ignore:
Timestamp:
Jun 29, 2013 1:19:43 PM (11 years ago)
Author:
Simon Fraser
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):

Location:
trunk/Source/WebCore
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r152211 r152212  
     12013-06-29  Simon Fraser  <simon.fraser@apple.com>
     2
     3        Avoid doing work in RenderBox::outlineBoundsForRepaint() when the repaintContainer is this
     4        https://bugs.webkit.org/show_bug.cgi?id=118215
     5
     6        Reviewed by Tim Horton.
     7
     8        When the RenderGeometryMap code path was added, RenderBox::outlineBoundsForRepaint()
     9        actually got slower if no coordinate mapping was needed. So avoid doing work when
     10        we can, including avoiding the FloatQuad construction.
     11       
     12        Speeds up scrolling overflow:scroll areas with large numbers of layer children.
     13
     14        * rendering/RenderBox.cpp:
     15        (WebCore::RenderBox::outlineBoundsForRepaint):
     16
    1172013-06-29  Kangil Han  <kangil.han@samsung.com>
    218
  • trunk/Source/WebCore/rendering/RenderBox.cpp

    r152149 r152212  
    538538    adjustRectForOutlineAndShadow(box);
    539539
    540     FloatQuad containerRelativeQuad;
    541     if (geometryMap)
    542         containerRelativeQuad = geometryMap->mapToContainer(box, repaintContainer);
    543     else
    544         containerRelativeQuad = localToContainerQuad(FloatRect(box), repaintContainer);
    545 
    546     box = containerRelativeQuad.enclosingBoundingBox();
    547 
     540    if (repaintContainer != this) {
     541        FloatQuad containerRelativeQuad;
     542        if (geometryMap)
     543            containerRelativeQuad = geometryMap->mapToContainer(box, repaintContainer);
     544        else
     545            containerRelativeQuad = localToContainerQuad(FloatRect(box), repaintContainer);
     546
     547        box = containerRelativeQuad.enclosingBoundingBox();
     548    }
     549   
    548550    // FIXME: layoutDelta needs to be applied in parts before/after transforms and
    549551    // repaint containers. https://bugs.webkit.org/show_bug.cgi?id=23308
Note: See TracChangeset for help on using the changeset viewer.