| Index: Source/core/rendering/RenderLayerRepainter.cpp
|
| diff --git a/Source/core/rendering/RenderLayerRepainter.cpp b/Source/core/rendering/RenderLayerRepainter.cpp
|
| index 141d303d802851ee0aca4d1b0bb7a6d7cd5cb6cc..c0030d9df2902cc6ba23e9d0a453089cd9d60b9c 100644
|
| --- a/Source/core/rendering/RenderLayerRepainter.cpp
|
| +++ b/Source/core/rendering/RenderLayerRepainter.cpp
|
| @@ -45,6 +45,7 @@
|
| #include "core/rendering/RenderLayerRepainter.h"
|
|
|
| #include "core/rendering/FilterEffectRenderer.h"
|
| +#include "core/rendering/LayoutRectRecorder.h"
|
| #include "core/rendering/RenderLayer.h"
|
| #include "core/rendering/RenderView.h"
|
| #include "core/rendering/compositing/CompositedLayerMapping.h"
|
| @@ -59,6 +60,9 @@ RenderLayerRepainter::RenderLayerRepainter(RenderLayerModelObject* renderer)
|
|
|
| void RenderLayerRepainter::repaintAfterLayout(RenderGeometryMap* geometryMap, bool shouldCheckForRepaint)
|
| {
|
| + if (RuntimeEnabledFeatures::repaintAfterLayoutEnabled())
|
| + return;
|
| +
|
| // FIXME: really, we're in the repaint phase here, and the following queries are legal.
|
| // Until those states are fully fledged, I'll just disable the ASSERTS.
|
| DisableCompositingQueryAsserts disabler;
|
| @@ -107,16 +111,30 @@ void RenderLayerRepainter::clearRepaintRects()
|
|
|
| void RenderLayerRepainter::computeRepaintRects(const RenderLayerModelObject* repaintContainer, const RenderGeometryMap* geometryMap)
|
| {
|
| + if (RuntimeEnabledFeatures::repaintAfterLayoutEnabled())
|
| + return;
|
| +
|
| m_repaintRect = m_renderer->clippedOverflowRectForRepaint(repaintContainer);
|
| m_outlineBox = m_renderer->outlineBoundsForRepaint(repaintContainer, geometryMap);
|
| }
|
|
|
| void RenderLayerRepainter::computeRepaintRectsIncludingDescendants()
|
| {
|
| - // FIXME: computeRepaintRects() has to walk up the parent chain for every layer to compute the rects.
|
| - // We should make this more efficient.
|
| - // FIXME: it's wrong to call this when layout is not up-to-date, which we do.
|
| - computeRepaintRects(m_renderer->containerForRepaint());
|
| + if (RuntimeEnabledFeatures::repaintAfterLayoutEnabled()) {
|
| + // FIXME: We want RenderLayerRepainter to go away when
|
| + // repaint-after-layout is on by default so we need to figure out how to
|
| + // handle this update.
|
| + //
|
| + // This is a little silly as we create and immediately destroy the RAII
|
| + // object but it makes sure we correctly set all of the repaint flags.
|
| + LayoutRectRecorder recorder(*m_renderer);
|
| +
|
| + } else {
|
| + // FIXME: computeRepaintRects() has to walk up the parent chain for every layer to compute the rects.
|
| + // We should make this more efficient.
|
| + // FIXME: it's wrong to call this when layout is not up-to-date, which we do.
|
| + computeRepaintRects(m_renderer->containerForRepaint());
|
| + }
|
|
|
| for (RenderLayer* layer = m_renderer->layer()->firstChild(); layer; layer = layer->nextSibling())
|
| layer->repainter().computeRepaintRectsIncludingDescendants();
|
| @@ -124,6 +142,9 @@ void RenderLayerRepainter::computeRepaintRectsIncludingDescendants()
|
|
|
| inline bool RenderLayerRepainter::shouldRepaintLayer() const
|
| {
|
| + if (RuntimeEnabledFeatures::repaintAfterLayoutEnabled())
|
| + return false;
|
| +
|
| if (m_repaintStatus != NeedsFullRepaintForPositionedMovementLayout)
|
| return true;
|
|
|
| @@ -145,7 +166,12 @@ void RenderLayerRepainter::repaintIncludingNonCompositingDescendants(RenderLayer
|
|
|
| LayoutRect RenderLayerRepainter::repaintRectIncludingNonCompositingDescendants() const
|
| {
|
| - LayoutRect repaintRect = m_repaintRect;
|
| + LayoutRect repaintRect;
|
| + if (RuntimeEnabledFeatures::repaintAfterLayoutEnabled())
|
| + repaintRect = m_renderer->newRepaintRect();
|
| + else
|
| + repaintRect = m_repaintRect;
|
| +
|
| for (RenderLayer* child = m_renderer->layer()->firstChild(); child; child = child->nextSibling()) {
|
| // Don't include repaint rects for composited child layers; they will paint themselves and have a different origin.
|
| if (child->hasCompositedLayerMapping())
|
|
|