Index: third_party/WebKit/Source/core/layout/compositing/PaintLayerCompositor.cpp |
diff --git a/third_party/WebKit/Source/core/layout/compositing/PaintLayerCompositor.cpp b/third_party/WebKit/Source/core/layout/compositing/PaintLayerCompositor.cpp |
index c05c19ddc568ecb1fb37e13496fe2a91266e04ac..fef4908c8abc5b4074c9e4ca0ed2cffd3ad1bc20 100644 |
--- a/third_party/WebKit/Source/core/layout/compositing/PaintLayerCompositor.cpp |
+++ b/third_party/WebKit/Source/core/layout/compositing/PaintLayerCompositor.cpp |
@@ -674,23 +674,31 @@ bool PaintLayerCompositor::attachFrameContentLayersToIframeLayer(LayoutPart* lay |
return true; |
} |
-static void fullyInvalidatePaintRecursive(PaintLayer* layer) |
+static void fullyInvalidatePaintRecursive(PaintLayer* layer, bool changeDirectlyCompositedImages) |
{ |
if (layer->compositingState() == PaintsIntoOwnBacking) { |
layer->compositedLayerMapping()->setContentsNeedDisplay(); |
layer->compositedLayerMapping()->setSquashingContentsNeedDisplay(); |
+ if (changeDirectlyCompositedImages) |
+ layer->compositedLayerMapping()->contentChanged(ImageChanged); |
} |
for (PaintLayer* child = layer->firstChild(); child; child = child->nextSibling()) |
- fullyInvalidatePaintRecursive(child); |
+ fullyInvalidatePaintRecursive(child, changeDirectlyCompositedImages); |
} |
-void PaintLayerCompositor::fullyInvalidatePaint() |
+void PaintLayerCompositor::fullyInvalidatePaint(bool changeDirectlyCompositedImages) |
{ |
// We're walking all compositing layers and invalidating them, so there's |
// no need to have up-to-date compositing state. |
DisableCompositingQueryAsserts disabler; |
- fullyInvalidatePaintRecursive(rootLayer()); |
+ fullyInvalidatePaintRecursive(rootLayer(), changeDirectlyCompositedImages); |
+ |
+ if (!changeDirectlyCompositedImages) |
+ return; |
+ |
+ // Setup for, and schedule a full root layer repaint via Page::animator(). |
+ rootLayer()->setNeedsCompositingInputsUpdate(); |
} |
PaintLayer* PaintLayerCompositor::rootLayer() const |