| Index: Source/core/rendering/RenderLayer.cpp
|
| diff --git a/Source/core/rendering/RenderLayer.cpp b/Source/core/rendering/RenderLayer.cpp
|
| index 33b0a7d59868918592247dba36eda2808b7ef5ac..45dd5850e4b2e1b25fb32774b2095ae144ac14be 100644
|
| --- a/Source/core/rendering/RenderLayer.cpp
|
| +++ b/Source/core/rendering/RenderLayer.cpp
|
| @@ -3674,6 +3674,7 @@ void RenderLayer::paintLayerContents(GraphicsContext* context, const LayerPainti
|
| // Apply clip-path to context.
|
| bool hasClipPath = false;
|
| RenderStyle* style = renderer()->style();
|
| + RenderSVGResourceClipper* resourceClipper = 0;
|
| if (renderer()->hasClipPath() && !context->paintingDisabled() && style) {
|
| ASSERT(style->clipPath());
|
| if (style->clipPath()->getOperationType() == ClipPathOperation::SHAPE) {
|
| @@ -3699,7 +3700,11 @@ void RenderLayer::paintLayerContents(GraphicsContext* context, const LayerPainti
|
| }
|
|
|
| // FIXME: This should use a safer cast such as toRenderSVGResourceContainer().
|
| - static_cast<RenderSVGResourceClipper*>(element->renderer())->applyClippingToContext(renderer(), rootRelativeBounds, paintingInfo.paintDirtyRect, context);
|
| + resourceClipper = static_cast<RenderSVGResourceClipper*>(element->renderer());
|
| + if (!resourceClipper->applyClippingToContext(renderer(), rootRelativeBounds, paintingInfo.paintDirtyRect, context)) {
|
| + // No need to post-apply the clipper if this failed.
|
| + resourceClipper = 0;
|
| + }
|
| }
|
| }
|
| }
|
| @@ -3825,6 +3830,9 @@ void RenderLayer::paintLayerContents(GraphicsContext* context, const LayerPainti
|
| m_usedTransparency = false;
|
| }
|
|
|
| + if (resourceClipper)
|
| + resourceClipper->postApplyResource(renderer(), context, ApplyToDefaultMode, 0, 0);
|
| +
|
| if (hasClipPath)
|
| context->restore();
|
| }
|
|
|