| Index: Source/core/rendering/svg/RenderSVGShape.cpp
 | 
| diff --git a/Source/core/rendering/svg/RenderSVGShape.cpp b/Source/core/rendering/svg/RenderSVGShape.cpp
 | 
| index 4ae25aa81ac239a132465f6a85a39eb39b537d94..b7b1bf335aca9bde40d2060a72995307ae37b971 100644
 | 
| --- a/Source/core/rendering/svg/RenderSVGShape.cpp
 | 
| +++ b/Source/core/rendering/svg/RenderSVGShape.cpp
 | 
| @@ -235,61 +235,60 @@ void RenderSVGShape::strokeShape(RenderStyle* style, GraphicsContext* context)
 | 
|  void RenderSVGShape::paint(PaintInfo& paintInfo, const LayoutPoint&)
 | 
|  {
 | 
|      ANNOTATE_GRAPHICS_CONTEXT(paintInfo, this);
 | 
| -
 | 
| -    if (paintInfo.context->paintingDisabled() || style()->visibility() == HIDDEN || isShapeEmpty())
 | 
| +    if (paintInfo.context->paintingDisabled()
 | 
| +        || paintInfo.phase != PaintPhaseForeground
 | 
| +        || style()->visibility() == HIDDEN
 | 
| +        || isShapeEmpty())
 | 
|          return;
 | 
| +
 | 
|      FloatRect boundingBox = repaintRectInLocalCoordinates();
 | 
|      if (!SVGRenderSupport::paintInfoIntersectsRepaintRect(boundingBox, m_localTransform, paintInfo))
 | 
|          return;
 | 
|  
 | 
|      PaintInfo childPaintInfo(paintInfo);
 | 
| -    bool drawsOutline = style()->outlineWidth() && (childPaintInfo.phase == PaintPhaseOutline || childPaintInfo.phase == PaintPhaseSelfOutline);
 | 
| -    if (drawsOutline || childPaintInfo.phase == PaintPhaseForeground) {
 | 
| -        GraphicsContextStateSaver stateSaver(*childPaintInfo.context);
 | 
| -        childPaintInfo.applyTransform(m_localTransform);
 | 
| -
 | 
| -        if (childPaintInfo.phase == PaintPhaseForeground) {
 | 
| -            SVGRenderingContext renderingContext(this, childPaintInfo);
 | 
| -
 | 
| -            if (renderingContext.isRenderingPrepared()) {
 | 
| -                const SVGRenderStyle* svgStyle = style()->svgStyle();
 | 
| -                if (svgStyle->shapeRendering() == SR_CRISPEDGES)
 | 
| -                    childPaintInfo.context->setShouldAntialias(false);
 | 
| -
 | 
| -                for (int i = 0; i < 3; i++) {
 | 
| -                    switch (svgStyle->paintOrderType(i)) {
 | 
| -                    case PT_FILL:
 | 
| -                        fillShape(this->style(), childPaintInfo.context);
 | 
| -                        break;
 | 
| -                    case PT_STROKE:
 | 
| -                        if (svgStyle->hasVisibleStroke()) {
 | 
| -                            GraphicsContextStateSaver stateSaver(*childPaintInfo.context, false);
 | 
| -                            AffineTransform nonScalingTransform;
 | 
| -
 | 
| -                            if (hasNonScalingStroke()) {
 | 
| -                                AffineTransform nonScalingTransform = nonScalingStrokeTransform();
 | 
| -                                if (!setupNonScalingStrokeContext(nonScalingTransform, stateSaver))
 | 
| -                                    return;
 | 
| -                            }
 | 
| -
 | 
| -                            strokeShape(this->style(), childPaintInfo.context);
 | 
| -                        }
 | 
| -                        break;
 | 
| -                    case PT_MARKERS:
 | 
| -                        if (!m_markerPositions.isEmpty())
 | 
| -                            drawMarkers(childPaintInfo);
 | 
| -                        break;
 | 
| -                    default:
 | 
| -                        ASSERT_NOT_REACHED();
 | 
| -                        break;
 | 
| +
 | 
| +    GraphicsContextStateSaver stateSaver(*childPaintInfo.context);
 | 
| +    childPaintInfo.applyTransform(m_localTransform);
 | 
| +
 | 
| +    SVGRenderingContext renderingContext(this, childPaintInfo);
 | 
| +
 | 
| +    if (renderingContext.isRenderingPrepared()) {
 | 
| +        const SVGRenderStyle* svgStyle = style()->svgStyle();
 | 
| +        if (svgStyle->shapeRendering() == SR_CRISPEDGES)
 | 
| +            childPaintInfo.context->setShouldAntialias(false);
 | 
| +
 | 
| +        for (int i = 0; i < 3; i++) {
 | 
| +            switch (svgStyle->paintOrderType(i)) {
 | 
| +            case PT_FILL:
 | 
| +                fillShape(this->style(), childPaintInfo.context);
 | 
| +                break;
 | 
| +            case PT_STROKE:
 | 
| +                if (svgStyle->hasVisibleStroke()) {
 | 
| +                    GraphicsContextStateSaver stateSaver(*childPaintInfo.context, false);
 | 
| +                    AffineTransform nonScalingTransform;
 | 
| +
 | 
| +                    if (hasNonScalingStroke()) {
 | 
| +                        AffineTransform nonScalingTransform = nonScalingStrokeTransform();
 | 
| +                        if (!setupNonScalingStrokeContext(nonScalingTransform, stateSaver))
 | 
| +                            return;
 | 
|                      }
 | 
| +
 | 
| +                    strokeShape(this->style(), childPaintInfo.context);
 | 
|                  }
 | 
| +                break;
 | 
| +            case PT_MARKERS:
 | 
| +                if (!m_markerPositions.isEmpty())
 | 
| +                    drawMarkers(childPaintInfo);
 | 
| +                break;
 | 
| +            default:
 | 
| +                ASSERT_NOT_REACHED();
 | 
| +                break;
 | 
|              }
 | 
|          }
 | 
| -
 | 
| -        if (drawsOutline)
 | 
| -            paintOutline(childPaintInfo, IntRect(boundingBox));
 | 
|      }
 | 
| +
 | 
| +    if (style()->outlineWidth())
 | 
| +        paintOutline(childPaintInfo, IntRect(boundingBox));
 | 
|  }
 | 
|  
 | 
|  // This method is called from inside paintOutline() since we call paintOutline()
 | 
| 
 |