Chromium Code Reviews| Index: Source/core/frame/FrameView.cpp |
| diff --git a/Source/core/frame/FrameView.cpp b/Source/core/frame/FrameView.cpp |
| index 8ec58d08914a74881c9cdea69332274fb6a15fda..d9aeb1a14fa659e33eb1bccf21689b957696c6fd 100644 |
| --- a/Source/core/frame/FrameView.cpp |
| +++ b/Source/core/frame/FrameView.cpp |
| @@ -999,9 +999,6 @@ void FrameView::layout(bool allowSubtree) |
| return; |
| if (RuntimeEnabledFeatures::repaintAfterLayoutEnabled()) { |
| - if (m_doFullRepaint) |
| - renderView()->setShouldDoFullRepaintAfterLayout(true); |
| - |
| repaintTree(rootForThisLayout); |
| } else if (m_doFullRepaint) { |
| @@ -1044,10 +1041,21 @@ void FrameView::repaintTree(RenderObject* root) |
| // Until those states are fully fledged, I'll just disable the ASSERTS. |
| DisableCompositingQueryAsserts disabler; |
| - for (RenderObject* renderer = root; renderer; renderer = renderer->nextInPreOrder()) { |
| - const LayoutRect& oldRepaintRect = renderer->oldRepaintRect(); |
| - const LayoutRect& newRepaintRect = renderer->newRepaintRect(); |
| + // If we are set to do a full repaint that means the RenderView will be |
| + // invalidated. We can then skip issuing of invalidations for the child |
| + // renderers as they'll be covered by the RenderView. |
| + if (m_doFullRepaint) { |
| + RenderObject* view = renderView(); |
|
Julien - ping for review
2014/03/31 20:28:35
RenderView* view = renderView()!!!
dsinclair
2014/03/31 20:53:52
Done.
|
| + view->repaintAfterLayoutIfNeeded(view->containerForRepaint(), true, view->oldRepaintRect(), &(view->newRepaintRect())); |
| + // Clear the invalidation flags for the render view and child renderers. |
| + for (RenderObject* renderer = view; renderer; renderer = renderer->nextInPreOrder()) { |
|
Julien - ping for review
2014/03/31 20:28:35
Shouldn't this be done on the |root|-rooted subtre
dsinclair
2014/03/31 20:53:52
Done. Keeping view as it's used 4 times on the rep
|
| + renderer->clearRepaintState(); |
| + } |
| + return; |
| + } |
| + |
|
Julien - ping for review
2014/03/31 20:28:35
How about adding an ASSERT here that we don't need
dsinclair
2014/03/31 20:53:52
Done.
|
| + for (RenderObject* renderer = root; renderer; renderer = renderer->nextInPreOrder()) { |
| if ((renderer->onlyNeededPositionedMovementLayout() && renderer->compositingState() != PaintsIntoOwnBacking) |
| || (renderer->shouldDoFullRepaintIfSelfPaintingLayer() |
| && renderer->hasLayer() |
| @@ -1067,7 +1075,7 @@ void FrameView::repaintTree(RenderObject* root) |
| } else { |
| didFullRepaint = renderer->repaintAfterLayoutIfNeeded(renderer->containerForRepaint(), |
| - renderer->shouldDoFullRepaintAfterLayout(), oldRepaintRect, &newRepaintRect); |
| + renderer->shouldDoFullRepaintAfterLayout(), renderer->oldRepaintRect(), &(renderer->newRepaintRect())); |
| } |
| if (!didFullRepaint) |