Index: Source/core/rendering/svg/RenderSVGModelObject.cpp |
diff --git a/Source/core/rendering/svg/RenderSVGModelObject.cpp b/Source/core/rendering/svg/RenderSVGModelObject.cpp |
index daeb2eedbac4cead26264887a974a5195655608a..0269301855984e9f2ca1d5addb06d74b79f23eb4 100644 |
--- a/Source/core/rendering/svg/RenderSVGModelObject.cpp |
+++ b/Source/core/rendering/svg/RenderSVGModelObject.cpp |
@@ -125,11 +125,20 @@ void RenderSVGModelObject::absoluteFocusRingQuads(Vector<FloatQuad>& quads) |
quads.append(localToAbsoluteQuad(FloatQuad(paintInvalidationRectInLocalCoordinates()))); |
} |
-InvalidationReason RenderSVGModelObject::invalidatePaintIfNeeded(const PaintInvalidationState& paintInvalidationState, const RenderLayerModelObject& paintInvalidationContainer) |
+void RenderSVGModelObject::invalidateTreeIfNeeded(const PaintInvalidationState& paintInvalidationState) |
{ |
- ForceHorriblySlowRectMapping slowRectMapping(&paintInvalidationState); |
+ ASSERT(!needsLayout()); |
- return RenderObject::invalidatePaintIfNeeded(paintInvalidationState, paintInvalidationContainer); |
+ // If we didn't need paint invalidation then our children don't need as well. |
+ // Skip walking down the tree as everything should be fine below us. |
+ if (!shouldCheckForPaintInvalidation(paintInvalidationState)) |
+ return; |
+ |
+ invalidatePaintIfNeeded(paintInvalidationState, paintInvalidationState.paintInvalidationContainer()); |
+ clearPaintInvalidationState(paintInvalidationState); |
+ |
+ PaintInvalidationState childPaintInvalidationState(paintInvalidationState, *this); |
+ invalidatePaintOfSubtreesIfNeeded(childPaintInvalidationState); |
} |
} // namespace blink |