| Index: third_party/WebKit/Source/core/layout/LayoutBoxModelObject.cpp
|
| diff --git a/third_party/WebKit/Source/core/layout/LayoutBoxModelObject.cpp b/third_party/WebKit/Source/core/layout/LayoutBoxModelObject.cpp
|
| index 9081857db32c0caf9d08620a6d0a46f5ebc4eb72..cd3587ad63c36c9c01f3a8c43e808791cc8e3b93 100644
|
| --- a/third_party/WebKit/Source/core/layout/LayoutBoxModelObject.cpp
|
| +++ b/third_party/WebKit/Source/core/layout/LayoutBoxModelObject.cpp
|
| @@ -412,6 +412,11 @@ void LayoutBoxModelObject::invalidateTreeIfNeeded(const PaintInvalidationState&
|
| invalidatePaintOfSubtreesIfNeeded(newPaintInvalidationState);
|
| }
|
|
|
| +static bool compositedScrollsWithRespectTo(const LayoutObject* layoutObject, const LayoutBoxModelObject& paintInvalidationContainer)
|
| +{
|
| + return paintInvalidationContainer.usesCompositedScrolling() && layoutObject != &paintInvalidationContainer;
|
| +}
|
| +
|
| void LayoutBoxModelObject::setBackingNeedsPaintInvalidationInRect(const LayoutRect& r, PaintInvalidationReason invalidationReason, const LayoutObject& object) const
|
| {
|
| // TODO(wangxianzhu): Enable the following assert after paint invalidation for spv2 is ready.
|
| @@ -428,12 +433,15 @@ void LayoutBoxModelObject::setBackingNeedsPaintInvalidationInRect(const LayoutRe
|
| // Note: the subpixel accumulation of layer() does not need to be added here. It is already taken into account.
|
| squashingLayer->setNeedsDisplayInRect(enclosingIntRect(paintInvalidationRect), invalidationReason, object);
|
| }
|
| + } else if (compositedScrollsWithRespectTo(&object, *this)) {
|
| + layer()->compositedLayerMapping()->setScrollingContentsNeedDisplayInRect(r, invalidationReason, object);
|
| } else {
|
| + // TODO(chrishtr): we should be able to skip scrolling content layers in this case.
|
| layer()->compositedLayerMapping()->setContentsNeedDisplayInRect(r, invalidationReason, object);
|
| }
|
| }
|
|
|
| -void LayoutBoxModelObject::invalidateDisplayItemClientOnBacking(const DisplayItemClient& displayItemClient, PaintInvalidationReason invalidationReason) const
|
| +void LayoutBoxModelObject::invalidateDisplayItemClientOnBacking(const DisplayItemClient& displayItemClient, PaintInvalidationReason invalidationReason, const LayoutObject* layoutObject) const
|
| {
|
| displayItemClient.setDisplayItemsUncached();
|
|
|
| @@ -448,7 +456,10 @@ void LayoutBoxModelObject::invalidateDisplayItemClientOnBacking(const DisplayIte
|
| if (GraphicsLayer* squashingLayer = layer()->groupedMapping()->squashingLayer())
|
| squashingLayer->displayItemClientWasInvalidated(displayItemClient, invalidationReason);
|
| } else if (CompositedLayerMapping* compositedLayerMapping = layer()->compositedLayerMapping()) {
|
| - compositedLayerMapping->displayItemClientWasInvalidated(displayItemClient, invalidationReason);
|
| + if (compositedScrollsWithRespectTo(layoutObject, *this))
|
| + compositedLayerMapping->scrollingDisplayItemClientWasInvalidated(displayItemClient, invalidationReason);
|
| + else
|
| + compositedLayerMapping->displayItemClientWasInvalidated(displayItemClient, invalidationReason);
|
| }
|
| }
|
|
|
|
|