| Index: Source/core/paint/LayerPainter.cpp
|
| diff --git a/Source/core/paint/LayerPainter.cpp b/Source/core/paint/LayerPainter.cpp
|
| index 00cc876b99e5ce5539f685e02b4cb98c4bc3ca06..86842ad35eead80ace4cc7c88d5f0a75001f252a 100644
|
| --- a/Source/core/paint/LayerPainter.cpp
|
| +++ b/Source/core/paint/LayerPainter.cpp
|
| @@ -101,8 +101,8 @@ void LayerPainter::paintLayer(GraphicsContext* context, const LayerPaintingInfo&
|
|
|
| if (needsToClip(paintingInfo, clipRect)) {
|
| clipRecorder = adoptPtr(new ClipRecorder(m_renderLayer.parent(), context, DisplayItem::ClipLayerParent, clipRect));
|
| -
|
| - LayerPainter(*m_renderLayer.parent()).applyRoundedRectClips(paintingInfo, context, clipRect, paintFlags, *clipRecorder);
|
| + if (clipRect.hasRadius())
|
| + LayerPainter(*m_renderLayer.parent()).applyRoundedRectClips(paintingInfo, context, paintFlags, *clipRecorder);
|
| }
|
| }
|
|
|
| @@ -295,7 +295,8 @@ void LayerPainter::paintLayerContents(GraphicsContext* context, const LayerPaint
|
|
|
| if (needsToClip(localPaintingInfo, backgroundRect)) {
|
| clipRecorder = adoptPtr(new ClipRecorder(&m_renderLayer, context, DisplayItem::ClipLayerFilter, backgroundRect));
|
| - applyRoundedRectClips(localPaintingInfo, context, backgroundRect, paintFlags, *clipRecorder);
|
| + if (backgroundRect.hasRadius())
|
| + applyRoundedRectClips(localPaintingInfo, context, paintFlags, *clipRecorder);
|
| }
|
|
|
| // Subsequent code should not clip to the dirty rect, since we've already
|
| @@ -393,12 +394,8 @@ bool LayerPainter::needsToClip(const LayerPaintingInfo& localPaintingInfo, const
|
| return clipRect.rect() != localPaintingInfo.paintDirtyRect || clipRect.hasRadius();
|
| }
|
|
|
| -void LayerPainter::applyRoundedRectClips(const LayerPaintingInfo& localPaintingInfo, GraphicsContext* context, const ClipRect& clipRect,
|
| - PaintLayerFlags paintFlags, ClipRecorder& clipRecorder, BorderRadiusClippingRule rule)
|
| +void LayerPainter::applyRoundedRectClips(const LayerPaintingInfo& localPaintingInfo, GraphicsContext* context, PaintLayerFlags paintFlags, ClipRecorder& clipRecorder, BorderRadiusClippingRule rule)
|
| {
|
| - if (!clipRect.hasRadius())
|
| - return;
|
| -
|
| // If the clip rect has been tainted by a border radius, then we have to walk up our layer chain applying the clips from
|
| // any layers with overflow. The condition for being able to apply these clips is that the overflow object be in our
|
| // containing block chain so we check that also.
|
| @@ -526,7 +523,8 @@ void LayerPainter::paintOverflowControlsForFragments(const LayerFragments& layer
|
|
|
| if (needsToClip(localPaintingInfo, fragment.backgroundRect)) {
|
| clipRecorder = adoptPtr(new ClipRecorder(&m_renderLayer, context, DisplayItem::ClipLayerOverflowControls, fragment.backgroundRect));
|
| - applyRoundedRectClips(localPaintingInfo, context, fragment.backgroundRect, paintFlags, *clipRecorder);
|
| + if (fragment.backgroundRect.hasRadius())
|
| + applyRoundedRectClips(localPaintingInfo, context, paintFlags, *clipRecorder);
|
| }
|
| if (RenderLayerScrollableArea* scrollableArea = m_renderLayer.scrollableArea())
|
| scrollableArea->paintOverflowControls(context, roundedIntPoint(toPoint(fragment.layerBounds.location() - m_renderLayer.renderBoxLocation() + subPixelAccumulationIfNeeded(localPaintingInfo.subPixelAccumulation, m_renderLayer.compositingState()))), pixelSnappedIntRect(fragment.backgroundRect.rect()), true);
|
| @@ -714,7 +712,8 @@ void LayerPainter::paintFragmentWithPhase(PaintPhase phase, const LayerFragment&
|
| }
|
|
|
| clipRecorder = adoptPtr(new ClipRecorder(&m_renderLayer, context, clipType, clipRect));
|
| - applyRoundedRectClips(paintingInfo, context, clipRect, paintFlags, *clipRecorder, clippingRule);
|
| + if (clipRect.hasRadius())
|
| + applyRoundedRectClips(paintingInfo, context, paintFlags, *clipRecorder, clippingRule);
|
| }
|
|
|
| PaintInfo paintInfo(context, pixelSnappedIntRect(clipRect.rect()), phase, paintBehavior, paintingRootForRenderer, 0, paintingInfo.rootLayer->renderer());
|
| @@ -755,7 +754,8 @@ void LayerPainter::paintForegroundForFragments(const LayerFragments& layerFragme
|
| OwnPtr<ClipRecorder> clipRecorder;
|
| if (shouldClip && needsToClip(localPaintingInfo, layerFragments[0].foregroundRect)) {
|
| clipRecorder = adoptPtr(new ClipRecorder(&m_renderLayer, context, DisplayItem::ClipLayerForeground, layerFragments[0].foregroundRect));
|
| - applyRoundedRectClips(localPaintingInfo, context, layerFragments[0].foregroundRect, paintFlags, *clipRecorder);
|
| + if (layerFragments[0].foregroundRect.hasRadius())
|
| + applyRoundedRectClips(localPaintingInfo, context, paintFlags, *clipRecorder);
|
| clipState = HasClipped;
|
| }
|
|
|
| @@ -843,11 +843,8 @@ void LayerPainter::paintTransformedLayerIntoFragments(GraphicsContext* context,
|
| }
|
|
|
| OwnPtr<ClipRecorder> clipRecorder;
|
| - if (needsToClip(paintingInfo, clipRect)) {
|
| + if (needsToClip(paintingInfo, clipRect))
|
| clipRecorder = adoptPtr(new ClipRecorder(m_renderLayer.parent(), context, DisplayItem::ClipLayerFragmentParent, clipRect));
|
| - // FIXME: why should we have to deal with rounded rect clips here at all?
|
| - LayerPainter(*m_renderLayer.parent()).applyRoundedRectClips(paintingInfo, context, clipRect, paintFlags, *clipRecorder);
|
| - }
|
|
|
| paintLayerByApplyingTransform(context, paintingInfo, paintFlags, fragment.paginationOffset);
|
| }
|
|
|