Index: Source/core/page/FrameView.cpp |
diff --git a/Source/core/page/FrameView.cpp b/Source/core/page/FrameView.cpp |
index 418533502ca19b76fcd2be907639eb1d512f4e7f..80bdbe73848b89d09ddf0be9cd5a4777c7db69b4 100644 |
--- a/Source/core/page/FrameView.cpp |
+++ b/Source/core/page/FrameView.cpp |
@@ -1255,7 +1255,7 @@ void FrameView::updateCanBlitOnScrollRecursively() |
bool FrameView::contentsInCompositedLayer() const |
{ |
RenderView* renderView = this->renderView(); |
- if (renderView && renderView->isComposited()) { |
+ if (renderView && renderView->compositingState() == PaintsIntoOwnBacking) { |
GraphicsLayer* layer = renderView->layer()->compositedLayerMapping()->mainGraphicsLayer(); |
if (layer && layer->drawsContent()) |
return true; |
@@ -1372,10 +1372,10 @@ bool FrameView::scrollContentsFastPath(const IntSize& scrollDelta, const IntRect |
ASSERT(renderer->hasLayer()); |
RenderLayer* layer = toRenderBoxModelObject(renderer)->layer(); |
- // Composited layers may still actually paint into their ancestor. |
- // If that happens, the viewport constrained object needs to be |
- // repainted on scroll. |
- if (layer->isComposited() && !layer->compositedLayerMapping()->paintsIntoCompositedAncestor()) |
+ // Layers that paint into their ancestor or into a grouped backing will still need |
+ // to apply a repaint invalidation. If the layer paints into its own backing, then |
+ // it does not need repainting just to scroll. |
+ if (layer->compositingState() == PaintsIntoOwnBacking) |
continue; |
if (layer->viewportConstrainedNotCompositedReason() == RenderLayer::NotCompositedForBoundsOutOfView |