Index: src/gpu/SkGpuDevice.cpp |
diff --git a/src/gpu/SkGpuDevice.cpp b/src/gpu/SkGpuDevice.cpp |
index ea24c8d6d74fb8b1b720bf1c92523684fce1a273..bba352569abe80026824e8c0d4435ba2b0c16e1b 100644 |
--- a/src/gpu/SkGpuDevice.cpp |
+++ b/src/gpu/SkGpuDevice.cpp |
@@ -544,7 +544,7 @@ void SkGpuDevice::drawRRect(const SkDraw& draw, const SkRRect& rect, |
if (rect.transform(*draw.fMatrix, &devRRect)) { |
if (devRRect.allCornersCircular()) { |
SkRect maskRect; |
- if (paint.getMaskFilter()->canFilterMaskGPU(devRRect.rect(), |
+ if (paint.getMaskFilter()->canFilterMaskGPU(devRRect, |
draw.fClip->getBounds(), |
*draw.fMatrix, |
&maskRect)) { |
@@ -637,7 +637,9 @@ void SkGpuDevice::drawOval(const SkDraw& draw, const SkRect& oval, |
bool usePath = false; |
// some basic reasons we might need to call drawPath... |
if (paint.getMaskFilter()) { |
- usePath = true; |
+ // 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()) { |