Index: src/gpu/GrContext.cpp |
diff --git a/src/gpu/GrContext.cpp b/src/gpu/GrContext.cpp |
index 819774a076a88b657f270dd7bc171a4a4908aaa6..5ffb32727f3cf777f26b9cf166f654017a3640f0 100755 |
--- a/src/gpu/GrContext.cpp |
+++ b/src/gpu/GrContext.cpp |
@@ -1325,33 +1325,36 @@ void GrContext::internalDrawPath(GrDrawTarget* target, |
GrStrokeInfo dashlessStrokeInfo(strokeInfo, false); |
if (NULL == pr && strokeInfo.isDashed()) { |
// It didn't work above, so try again with dashed stroke converted to a dashless stroke. |
- if (strokeInfo.applyDash(tmpPath.init(), &dashlessStrokeInfo, *pathPtr)) { |
- pathPtr = tmpPath.get(); |
- if (pathPtr->isEmpty()) { |
- return; |
- } |
- strokeInfoPtr = &dashlessStrokeInfo; |
+ if (!strokeInfo.applyDash(tmpPath.init(), &dashlessStrokeInfo, *pathPtr)) { |
+ return; |
+ } |
+ pathPtr = tmpPath.get(); |
+ if (pathPtr->isEmpty()) { |
+ return; |
} |
+ strokeInfoPtr = &dashlessStrokeInfo; |
pr = this->getPathRenderer(target, pipelineBuilder, viewMatrix, *pathPtr, *strokeInfoPtr, |
false, type); |
} |
if (NULL == pr) { |
- if (!GrPathRenderer::IsStrokeHairlineOrEquivalent(*strokeInfoPtr, viewMatrix, NULL)) { |
+ if (!GrPathRenderer::IsStrokeHairlineOrEquivalent(*strokeInfoPtr, viewMatrix, NULL) && |
+ !strokeInfoPtr->isFillStyle()) { |
// It didn't work above, so try again with stroke converted to a fill. |
if (!tmpPath.isValid()) { |
tmpPath.init(); |
} |
SkStrokeRec* strokeRec = dashlessStrokeInfo.getStrokeRecPtr(); |
strokeRec->setResScale(SkScalarAbs(viewMatrix.getMaxScale())); |
- if (strokeRec->applyToPath(tmpPath.get(), *pathPtr)) { |
- pathPtr = tmpPath.get(); |
- if (pathPtr->isEmpty()) { |
- return; |
- } |
- strokeRec->setFillStyle(); |
- strokeInfoPtr = &dashlessStrokeInfo; |
+ if (!strokeRec->applyToPath(tmpPath.get(), *pathPtr)) { |
+ return; |
+ } |
+ pathPtr = tmpPath.get(); |
+ if (pathPtr->isEmpty()) { |
+ return; |
} |
+ strokeRec->setFillStyle(); |
+ strokeInfoPtr = &dashlessStrokeInfo; |
} |
// This time, allow SW renderer |