Index: src/gpu/SkGpuDevice.cpp |
diff --git a/src/gpu/SkGpuDevice.cpp b/src/gpu/SkGpuDevice.cpp |
index 9b6a5304d2642374f9644781cefe44d5bafe87ba..b8630e555530cb8273c02527a1538fbdc0a42e4f 100644 |
--- a/src/gpu/SkGpuDevice.cpp |
+++ b/src/gpu/SkGpuDevice.cpp |
@@ -567,19 +567,7 @@ void SkGpuDevice::drawRRect(const SkDraw& draw, const SkRRect& rect, |
} |
- bool usePath = false; |
- |
- if (paint.getMaskFilter()) { |
- usePath = true; |
- } else { |
- const SkPathEffect* pe = paint.getPathEffect(); |
- if (pe && !strokeInfo.isDashed()) { |
- usePath = true; |
- } |
- } |
- |
- |
- if (usePath) { |
+ if (paint.getMaskFilter() || paint.getPathEffect()) { |
reed1
2015/11/24 14:42:29
I wonder if a brief comment would help here. Is th
|
SkPath path; |
path.setIsVolatile(true); |
path.addRRect(rect); |
@@ -587,6 +575,8 @@ void SkGpuDevice::drawRRect(const SkDraw& draw, const SkRRect& rect, |
return; |
} |
+ SkASSERT(!strokeInfo.isDashed()); |
+ |
fDrawContext->drawRRect(fClip, grPaint, *draw.fMatrix, rect, strokeInfo); |
} |
@@ -621,33 +611,24 @@ void SkGpuDevice::drawDRRect(const SkDraw& draw, const SkRRect& outer, |
///////////////////////////////////////////////////////////////////////////// |
-void SkGpuDevice::drawOval(const SkDraw& draw, const SkRect& oval, |
- const SkPaint& paint) { |
+void SkGpuDevice::drawOval(const SkDraw& draw, const SkRect& oval, const SkPaint& paint) { |
GR_CREATE_TRACE_MARKER_CONTEXT("SkGpuDevice::drawOval", fContext); |
CHECK_FOR_ANNOTATION(paint); |
CHECK_SHOULD_DRAW(draw); |
- GrStrokeInfo strokeInfo(paint); |
- |
- bool usePath = false; |
- // some basic reasons we might need to call drawPath... |
- if (paint.getMaskFilter()) { |
- // The RRect path can handle special case blurring |
- SkRRect rr = SkRRect::MakeOval(oval); |
- return this->drawRRect(draw, rr, paint); |
- } else { |
- const SkPathEffect* pe = paint.getPathEffect(); |
- if (pe && !strokeInfo.isDashed()) { |
- usePath = true; |
- } |
- } |
- |
- if (usePath) { |
+ // Presumably the path effect warps this to something other than an oval |
+ if (paint.getPathEffect()) { |
SkPath path; |
path.setIsVolatile(true); |
path.addOval(oval); |
this->drawPath(draw, path, paint, nullptr, true); |
return; |
+ } |
+ |
+ if (paint.getMaskFilter()) { |
+ // The RRect path can handle special case blurring |
+ SkRRect rr = SkRRect::MakeOval(oval); |
+ return this->drawRRect(draw, rr, paint); |
} |
GrPaint grPaint; |
@@ -655,6 +636,9 @@ void SkGpuDevice::drawOval(const SkDraw& draw, const SkRect& oval, |
return; |
} |
+ GrStrokeInfo strokeInfo(paint); |
+ SkASSERT(!strokeInfo.isDashed()); |
+ |
fDrawContext->drawOval(fClip, grPaint, *draw.fMatrix, oval, strokeInfo); |
} |