| Index: Source/core/rendering/RenderLayer.cpp
|
| diff --git a/Source/core/rendering/RenderLayer.cpp b/Source/core/rendering/RenderLayer.cpp
|
| index a0e473550efdb477530b6934bc037f101901eafe..7baf7edc03eaaca5837c346f513afc3b1025e21a 100644
|
| --- a/Source/core/rendering/RenderLayer.cpp
|
| +++ b/Source/core/rendering/RenderLayer.cpp
|
| @@ -3496,15 +3496,21 @@ static inline bool shouldSuppressPaintingLayer(RenderLayer* layer)
|
| return false;
|
| }
|
|
|
| +static bool paintForFixedRootBackground(const RenderLayer* layer, RenderLayer::PaintLayerFlags paintFlags)
|
| +{
|
| + return layer->renderer()->isRoot() && (paintFlags & RenderLayer::PaintLayerPaintingRootBackgroundOnly);
|
| +}
|
| +
|
| void RenderLayer::paintLayer(GraphicsContext* context, const LayerPaintingInfo& paintingInfo, PaintLayerFlags paintFlags)
|
| {
|
| if (isComposited()) {
|
| // The updatingControlTints() painting pass goes through compositing layers,
|
| // but we need to ensure that we don't cache clip rects computed with the wrong root in this case.
|
| - if (context->updatingControlTints() || (paintingInfo.paintBehavior & PaintBehaviorFlattenCompositingLayers))
|
| + if (context->updatingControlTints() || (paintingInfo.paintBehavior & PaintBehaviorFlattenCompositingLayers)) {
|
| paintFlags |= PaintLayerTemporaryClipRects;
|
| - else if (!backing()->paintsIntoCompositedAncestor()
|
| - && !shouldDoSoftwarePaint(this, paintFlags & PaintLayerPaintingReflection)) {
|
| + } else if (!backing()->paintsIntoCompositedAncestor()
|
| + && !shouldDoSoftwarePaint(this, paintFlags & PaintLayerPaintingReflection)
|
| + && !paintForFixedRootBackground(this, paintFlags)) {
|
| // If this RenderLayer should paint into its backing, that will be done via RenderLayerBacking::paintIntoLayer().
|
| return;
|
| }
|
|
|