| Index: third_party/WebKit/Source/core/layout/LayoutObject.cpp
|
| diff --git a/third_party/WebKit/Source/core/layout/LayoutObject.cpp b/third_party/WebKit/Source/core/layout/LayoutObject.cpp
|
| index 92d0bd70c935e2b98cc76bfd53922962c3be6be9..14853757dc8a84ca56235fb79ff751c699cb93cf 100644
|
| --- a/third_party/WebKit/Source/core/layout/LayoutObject.cpp
|
| +++ b/third_party/WebKit/Source/core/layout/LayoutObject.cpp
|
| @@ -1313,6 +1313,10 @@ void LayoutObject::invalidateTreeIfNeeded(const PaintInvalidationState& paintInv
|
| return;
|
|
|
| PaintInvalidationState newPaintInvalidationState(paintInvalidationState, *this);
|
| +
|
| + if (mayNeedPaintInvalidationSubtree())
|
| + newPaintInvalidationState.setForceSubtreeInvalidationCheckingWithinContainer();
|
| +
|
| PaintInvalidationReason reason = invalidatePaintIfNeeded(newPaintInvalidationState);
|
| clearPaintInvalidationFlags(newPaintInvalidationState);
|
|
|
| @@ -3451,6 +3455,14 @@ void LayoutObject::setMayNeedPaintInvalidation()
|
| frameView()->scheduleVisualUpdateForPaintInvalidationIfNeeded();
|
| }
|
|
|
| +void LayoutObject::setMayNeedPaintInvalidationSubtree()
|
| +{
|
| + if (mayNeedPaintInvalidationSubtree())
|
| + return;
|
| + m_bitfields.setMayNeedPaintInvalidationSubtree(true);
|
| + setMayNeedPaintInvalidation();
|
| +}
|
| +
|
| void LayoutObject::clearPaintInvalidationFlags(const PaintInvalidationState& paintInvalidationState)
|
| {
|
| // paintInvalidationStateIsDirty should be kept in sync with the
|
| @@ -3461,6 +3473,7 @@ void LayoutObject::clearPaintInvalidationFlags(const PaintInvalidationState& pai
|
| m_bitfields.setNeededLayoutBecauseOfChildren(false);
|
| m_bitfields.setShouldInvalidateOverflowForPaint(false);
|
| m_bitfields.setMayNeedPaintInvalidation(false);
|
| + m_bitfields.setMayNeedPaintInvalidationSubtree(false);
|
| m_bitfields.setShouldInvalidateSelection(false);
|
| }
|
|
|
|
|