Index: Source/core/rendering/RenderBlock.cpp |
diff --git a/Source/core/rendering/RenderBlock.cpp b/Source/core/rendering/RenderBlock.cpp |
index 66e6126d4009e68919bbc0b2771651602a68ec54..a7b4d75a80a1e7a4a565eec948246a377757af24 100644 |
--- a/Source/core/rendering/RenderBlock.cpp |
+++ b/Source/core/rendering/RenderBlock.cpp |
@@ -362,8 +362,12 @@ void RenderBlock::styleDidChange(StyleDifference diff, const RenderStyle* oldSty |
void RenderBlock::repaintTreeAfterLayout() |
{ |
+ bool maybeInvalidated = mayNeedInvalidation(); |
RenderBox::repaintTreeAfterLayout(); |
+ if (!maybeInvalidated) |
+ return; |
+ |
// Take care of positioned objects. This is required as LayoutState keeps a single clip rect. |
if (TrackedRendererListHashSet* positionedObjects = this->positionedObjects()) { |
TrackedRendererListHashSet::iterator end = positionedObjects->end(); |
@@ -1625,6 +1629,7 @@ void RenderBlock::layoutPositionedObjects(bool relayoutChildren, PositionedLayou |
// FIXME: this should only be set from clearNeedsLayout crbug.com/361250 |
r->setLayoutDidGetCalled(true); |
+ r->setMayNeedInvalidation(true); |
SubtreeLayoutScope layoutScope(*r); |
// A fixed position element with an absolute positioned ancestor has no way of knowing if the latter has changed position. So |