Index: Source/core/paint/LayerPainter.cpp |
diff --git a/Source/core/paint/LayerPainter.cpp b/Source/core/paint/LayerPainter.cpp |
index 82eb2a148b5e9c95d2d8efdf06e617cb8f66351e..05b6492df76316b2b7cfaa6481e58f8dcf890b2a 100644 |
--- a/Source/core/paint/LayerPainter.cpp |
+++ b/Source/core/paint/LayerPainter.cpp |
@@ -85,7 +85,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()); |
@@ -96,7 +96,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 { |
@@ -165,7 +165,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)); |
@@ -226,9 +226,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); |
} |
@@ -396,7 +399,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); |
chrishtr
2015/01/15 23:33:45
What I mean is that this call stack appears to be
mstensho (USE GERRIT)
2015/02/03 13:55:01
paintLayerWithTransform() collects fragment(s) for
|
} |
void LayerPainter::paintChildren(unsigned childrenToVisit, GraphicsContext* context, const LayerPaintingInfo& paintingInfo, PaintLayerFlags paintFlags) |