Index: src/gpu/GrShape.cpp |
diff --git a/src/gpu/GrShape.cpp b/src/gpu/GrShape.cpp |
index 11b2d38971b8faf37686630d16642338a42b69fc..7be7e7ad041931a04316b5aeaa2a0d77986a4f4d 100644 |
--- a/src/gpu/GrShape.cpp |
+++ b/src/gpu/GrShape.cpp |
@@ -281,16 +281,16 @@ GrShape::GrShape(const GrShape& parent, GrStyle::Apply apply, SkScalar scale) { |
static inline bool rrect_path_is_inverse_filled(const SkPath& path, const SkStrokeRec& strokeRec, |
const SkPathEffect* pe) { |
- // Dashing doesn't use the path fill type. Dashing only works with stroking |
+ // This is currently imitating the questionable behavior of the sw-rasterizer. Inverseness is |
+ // respected for stroking but not dashing + stroking. (We make no assumptions about arbitrary |
+ // path effects and preserve the path's inverseness.) |
+ // skbug.com/5421 |
if (pe && pe->asADash(nullptr)) { |
- pe = nullptr; |
- } |
- |
- SkStrokeRec::Style style = strokeRec.getStyle(); |
- if (!pe && (SkStrokeRec::kStroke_Style == style || SkStrokeRec::kHairline_Style == style)) { |
- // stroking ignores the path fill rule. |
+ SkDEBUGCODE(SkStrokeRec::Style style = strokeRec.getStyle();) |
+ SkASSERT(SkStrokeRec::kStroke_Style == style || SkStrokeRec::kHairline_Style == style); |
return false; |
} |
+ |
return path.isInverseFillType(); |
} |