Index: src/gpu/SkGpuDevice.cpp |
diff --git a/src/gpu/SkGpuDevice.cpp b/src/gpu/SkGpuDevice.cpp |
index 337f400056f87c9d48d7d536c6ae3d30568a4c55..4e79db5cf727eae0650dee5247d211782df29261 100644 |
--- a/src/gpu/SkGpuDevice.cpp |
+++ b/src/gpu/SkGpuDevice.cpp |
@@ -826,17 +826,23 @@ void SkGpuDevice::internalDrawPath(const SkPath& origSrcPath, const SkPaint& pai |
const SkRect* cullRect = NULL; // TODO: what is our bounds? |
SkStrokeRec* strokePtr = strokeInfo.getStrokeRecPtr(); |
- if (pathEffect && pathEffect->filterPath(effectPath.init(), *pathPtr, strokePtr, |
- cullRect)) { |
+ if (!strokeInfo.isDashed() && pathEffect && pathEffect->filterPath(effectPath.init(), *pathPtr, |
+ strokePtr, cullRect)) { |
pathPtr = effectPath.get(); |
pathIsMutable = true; |
- strokeInfo.removeDash(); |
} |
const SkStrokeRec& stroke = strokeInfo.getStrokeRec(); |
if (paint.getMaskFilter()) { |
if (!stroke.isHairlineStyle()) { |
SkPath* strokedPath = pathIsMutable ? pathPtr : tmpPath.init(); |
+ if (strokeInfo.isDashed()) { |
+ if (pathEffect->filterPath(strokedPath, *pathPtr, strokePtr, cullRect)) { |
+ pathPtr = strokedPath; |
+ pathIsMutable = true; |
+ } |
+ strokeInfo.removeDash(); |
+ } |
if (stroke.applyToPath(strokedPath, *pathPtr)) { |
egdaniel
2015/04/28 13:25:48
what happens if both these if statements trigger a
Kimmo Kinnunen
2015/04/28 14:12:30
Yeah, the intention is to first apply the dashing
egdaniel
2015/04/28 14:18:19
So if on line 838, if !pathIsMutable then strokedP
egdaniel
2015/04/28 14:20:09
oh wait I am missing a line. woops ignore all my s
|
pathPtr = strokedPath; |
pathIsMutable = true; |