| Index: Source/core/rendering/RenderObject.cpp
|
| diff --git a/Source/core/rendering/RenderObject.cpp b/Source/core/rendering/RenderObject.cpp
|
| index 7a1df64b3dfb3370ad5e8d9947c8c46199b24506..abd3214a1dab818033b16d538add9a5afc4b6959 100644
|
| --- a/Source/core/rendering/RenderObject.cpp
|
| +++ b/Source/core/rendering/RenderObject.cpp
|
| @@ -1604,10 +1604,10 @@ void RenderObject::invalidateTreeIfNeeded(const PaintInvalidationState& paintInv
|
| {
|
| // 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())
|
| + if (!shouldCheckForPaintInvalidation(paintInvalidationState))
|
| return;
|
|
|
| - clearPaintInvalidationState();
|
| + clearPaintInvalidationState(paintInvalidationState);
|
|
|
| for (RenderObject* child = slowFirstChild(); child; child = child->nextSibling()) {
|
| if (!child->isOutOfFlowPositioned())
|
| @@ -1623,11 +1623,11 @@ static PassRefPtr<TraceEvent::ConvertableToTraceFormat> jsonObjectForOldAndNewRe
|
| return value;
|
| }
|
|
|
| -bool RenderObject::invalidatePaintIfNeeded(const RenderLayerModelObject& paintInvalidationContainer, const LayoutRect& oldBounds, const LayoutPoint& oldLocation, const PaintInvalidationState& paintInvalidationState)
|
| +InvalidationReason RenderObject::invalidatePaintIfNeeded(const RenderLayerModelObject& paintInvalidationContainer, const LayoutRect& oldBounds, const LayoutPoint& oldLocation, const PaintInvalidationState& paintInvalidationState)
|
| {
|
| RenderView* v = view();
|
| if (v->document().printing())
|
| - return false; // Don't invalidate paints if we're printing.
|
| + return InvalidationNone; // Don't invalidate paints if we're printing.
|
|
|
| const LayoutRect& newBounds = previousPaintInvalidationRect();
|
| const LayoutPoint& newLocation = previousPositionFromPaintInvalidationContainer();
|
| @@ -1644,15 +1644,15 @@ bool RenderObject::invalidatePaintIfNeeded(const RenderLayerModelObject& paintIn
|
| InvalidationReason invalidationReason = getPaintInvalidationReason(paintInvalidationContainer, oldBounds, oldLocation, newBounds, newLocation);
|
|
|
| if (invalidationReason == InvalidationNone)
|
| - return false;
|
| + return invalidationReason;
|
|
|
| if (invalidationReason == InvalidationIncremental) {
|
| incrementallyInvalidatePaint(paintInvalidationContainer, oldBounds, newBounds);
|
| - return false;
|
| + return invalidationReason;
|
| }
|
|
|
| fullyInvalidatePaint(paintInvalidationContainer, invalidationReason, oldBounds, newBounds);
|
| - return true;
|
| + return invalidationReason;
|
| }
|
|
|
| InvalidationReason RenderObject::getPaintInvalidationReason(const RenderLayerModelObject& paintInvalidationContainer,
|
| @@ -3399,11 +3399,11 @@ bool RenderObject::isRelayoutBoundaryForInspector() const
|
| return objectIsRelayoutBoundary(this);
|
| }
|
|
|
| -void RenderObject::clearPaintInvalidationState()
|
| +void RenderObject::clearPaintInvalidationState(const PaintInvalidationState& paintInvalidationState)
|
| {
|
| // paintInvalidationStateIsDirty should be kept in sync with the
|
| // booleans that are cleared below.
|
| - ASSERT(paintInvalidationStateIsDirty());
|
| + ASSERT(paintInvalidationState.forceCheckForPaintInvalidation() || paintInvalidationStateIsDirty());
|
| setShouldDoFullPaintInvalidation(false);
|
| setShouldDoFullPaintInvalidationIfSelfPaintingLayer(false);
|
| setOnlyNeededPositionedMovementLayout(false);
|
|
|