| Index: Source/core/rendering/RenderObject.cpp
|
| diff --git a/Source/core/rendering/RenderObject.cpp b/Source/core/rendering/RenderObject.cpp
|
| index 9562761e91aeb1863012833c8bc802c1e974419b..52cbc219d972f87ab7151635d51f914b5f341bb1 100644
|
| --- a/Source/core/rendering/RenderObject.cpp
|
| +++ b/Source/core/rendering/RenderObject.cpp
|
| @@ -1514,10 +1514,17 @@ bool RenderObject::repaintAfterLayoutIfNeeded(const RenderLayerModelObject* repa
|
| // This ASSERT fails due to animations. See https://bugs.webkit.org/show_bug.cgi?id=37048
|
| // ASSERT(!newOutlineBoxRectPtr || *newOutlineBoxRectPtr == outlineBoundsForRepaint(repaintContainer));
|
| newOutlineBox = newOutlineBoxRectPtr ? *newOutlineBoxRectPtr : outlineBoundsForRepaint(repaintContainer);
|
| - if (newOutlineBox.location() != oldOutlineBox.location() || (mustRepaintBackgroundOrBorder() && (newBounds != oldBounds || newOutlineBox != oldOutlineBox)))
|
| +
|
| + if ((hasOutline() && newOutlineBox.location() != oldOutlineBox.location())
|
| + || (mustRepaintBackgroundOrBorder() && (newBounds != oldBounds || (hasOutline() && newOutlineBox != oldOutlineBox))))
|
| fullRepaint = true;
|
| }
|
|
|
| + // If there is no intersection between the old and the new bounds, invalidating
|
| + // the difference is more expensive than just doing a full repaint.
|
| + if (!fullRepaint && !newBounds.intersects(oldBounds))
|
| + fullRepaint = true;
|
| +
|
| if (!repaintContainer)
|
| repaintContainer = v;
|
|
|
|
|