| Index: Source/core/paint/LayerPainter.cpp
|
| diff --git a/Source/core/paint/LayerPainter.cpp b/Source/core/paint/LayerPainter.cpp
|
| index 2751be4e24d7570bb71356809f4c69f312115971..f61e1ec5f71b50cc8b74c461d64c50fab00804e9 100644
|
| --- a/Source/core/paint/LayerPainter.cpp
|
| +++ b/Source/core/paint/LayerPainter.cpp
|
| @@ -88,7 +88,7 @@ void LayerPainter::paintLayer(GraphicsContext* context, const LayerPaintingInfo&
|
| paintLayerContentsAndReflection(context, paintingInfo, paintFlags);
|
| }
|
|
|
| -void LayerPainter::paintLayerContentsAndReflection(GraphicsContext* context, const LayerPaintingInfo& paintingInfo, PaintLayerFlags paintFlags)
|
| +void LayerPainter::paintLayerContentsAndReflection(GraphicsContext* context, const LayerPaintingInfo& paintingInfo, PaintLayerFlags paintFlags, FragmentPolicy fragmentPolicy)
|
| {
|
| ASSERT(m_renderLayer.isSelfPaintingLayer() || m_renderLayer.hasSelfPaintingLayerDescendant());
|
|
|
| @@ -99,7 +99,7 @@ void LayerPainter::paintLayerContentsAndReflection(GraphicsContext* context, con
|
| m_renderLayer.reflectionInfo()->paint(context, paintingInfo, localPaintFlags | PaintLayerPaintingReflection);
|
|
|
| localPaintFlags |= PaintLayerPaintingCompositingAllPhases;
|
| - paintLayerContents(context, paintingInfo, localPaintFlags);
|
| + paintLayerContents(context, paintingInfo, localPaintFlags, fragmentPolicy);
|
| }
|
|
|
| class ClipPathHelper {
|
| @@ -169,7 +169,7 @@ private:
|
| GraphicsContext* m_context;
|
| };
|
|
|
| -void LayerPainter::paintLayerContents(GraphicsContext* context, const LayerPaintingInfo& paintingInfo, PaintLayerFlags paintFlags)
|
| +void LayerPainter::paintLayerContents(GraphicsContext* context, const LayerPaintingInfo& paintingInfo, PaintLayerFlags paintFlags, FragmentPolicy fragmentPolicy)
|
| {
|
| ASSERT(m_renderLayer.isSelfPaintingLayer() || m_renderLayer.hasSelfPaintingLayerDescendant());
|
| ASSERT(!(paintFlags & PaintLayerAppliedTransform));
|
| @@ -230,9 +230,12 @@ void LayerPainter::paintLayerContents(GraphicsContext* context, const LayerPaint
|
| LayerFragments layerFragments;
|
| if (shouldPaintContent || shouldPaintOutline || isPaintingOverlayScrollbars) {
|
| // Collect the fragments. This will compute the clip rectangles and paint offsets for each layer fragment.
|
| - m_renderLayer.collectFragments(layerFragments, localPaintingInfo.rootLayer, localPaintingInfo.paintDirtyRect,
|
| - (paintFlags & PaintLayerUncachedClipRects) ? UncachedClipRects : PaintingClipRects, IgnoreOverlayScrollbarSize,
|
| - shouldRespectOverflowClip(paintFlags, m_renderLayer.renderer()), &offsetFromRoot, localPaintingInfo.subPixelAccumulation);
|
| + ClipRectsCacheSlot cacheSlot = (paintFlags & PaintLayerUncachedClipRects) ? UncachedClipRects : PaintingClipRects;
|
| + ShouldRespectOverflowClip respectOverflowClip = shouldRespectOverflowClip(paintFlags, m_renderLayer.renderer());
|
| + if (fragmentPolicy == ForceSingleFragment)
|
| + m_renderLayer.appendSingleFragmentIgnoringPagination(layerFragments, localPaintingInfo.rootLayer, localPaintingInfo.paintDirtyRect, cacheSlot, IgnoreOverlayScrollbarSize, respectOverflowClip, &offsetFromRoot, localPaintingInfo.subPixelAccumulation);
|
| + else
|
| + m_renderLayer.collectFragments(layerFragments, localPaintingInfo.rootLayer, localPaintingInfo.paintDirtyRect, cacheSlot, IgnoreOverlayScrollbarSize, respectOverflowClip, &offsetFromRoot, localPaintingInfo.subPixelAccumulation);
|
| if (shouldPaintContent)
|
| shouldPaintContent = atLeastOneFragmentIntersectsDamageRect(layerFragments, localPaintingInfo, paintFlags, offsetFromRoot);
|
| }
|
| @@ -401,7 +404,7 @@ void LayerPainter::paintFragmentByApplyingTransform(GraphicsContext* context, co
|
| // Now do a paint with the root layer shifted to be us.
|
| LayerPaintingInfo transformedPaintingInfo(&m_renderLayer, enclosingIntRect(transform.inverse().mapRect(paintingInfo.paintDirtyRect)), paintingInfo.paintBehavior,
|
| adjustedSubPixelAccumulation, paintingInfo.paintingRoot);
|
| - paintLayerContentsAndReflection(context, transformedPaintingInfo, paintFlags);
|
| + paintLayerContentsAndReflection(context, transformedPaintingInfo, paintFlags, ForceSingleFragment);
|
| }
|
|
|
| void LayerPainter::paintChildren(unsigned childrenToVisit, GraphicsContext* context, const LayerPaintingInfo& paintingInfo, PaintLayerFlags paintFlags)
|
|
|