Index: Source/core/rendering/RenderLayerRepainter.cpp |
diff --git a/Source/core/rendering/RenderLayerRepainter.cpp b/Source/core/rendering/RenderLayerRepainter.cpp |
index 7381c8ead3d057e6ad69727147d623d550c222a8..141d303d802851ee0aca4d1b0bb7a6d7cd5cb6cc 100644 |
--- a/Source/core/rendering/RenderLayerRepainter.cpp |
+++ b/Source/core/rendering/RenderLayerRepainter.cpp |
@@ -74,6 +74,7 @@ void RenderLayerRepainter::repaintAfterLayout(RenderGeometryMap* geometryMap, bo |
LayoutRect oldRepaintRect = m_repaintRect; |
LayoutRect oldOutlineBox = m_outlineBox; |
computeRepaintRects(repaintContainer, geometryMap); |
+ shouldCheckForRepaint &= shouldRepaintLayer(); |
// FIXME: Should ASSERT that value calculated for m_outlineBox using the cached offset is the same |
// as the value not using the cached offset, but we can't due to https://bugs.webkit.org/show_bug.cgi?id=37048 |
@@ -83,7 +84,7 @@ void RenderLayerRepainter::repaintAfterLayout(RenderGeometryMap* geometryMap, bo |
m_renderer->repaintUsingContainer(repaintContainer, pixelSnappedIntRect(oldRepaintRect)); |
if (m_repaintRect != oldRepaintRect) |
m_renderer->repaintUsingContainer(repaintContainer, pixelSnappedIntRect(m_repaintRect)); |
- } else if (shouldRepaintAfterLayout()) { |
+ } else { |
m_renderer->repaintAfterLayoutIfNeeded(repaintContainer, m_renderer->selfNeedsLayout(), oldRepaintRect, oldOutlineBox, &m_repaintRect, &m_outlineBox); |
} |
} |
@@ -121,14 +122,13 @@ void RenderLayerRepainter::computeRepaintRectsIncludingDescendants() |
layer->repainter().computeRepaintRectsIncludingDescendants(); |
} |
-inline bool RenderLayerRepainter::shouldRepaintAfterLayout() const |
+inline bool RenderLayerRepainter::shouldRepaintLayer() const |
{ |
- if (m_repaintStatus == NeedsNormalRepaint) |
+ if (m_repaintStatus != NeedsFullRepaintForPositionedMovementLayout) |
return true; |
// Composited layers that were moved during a positioned movement only |
// layout, don't need to be repainted. They just need to be recomposited. |
- ASSERT(m_repaintStatus == NeedsFullRepaintForPositionedMovementLayout); |
return m_renderer->compositingState() != PaintsIntoOwnBacking; |
} |