Index: src/gpu/GrSWMaskHelper.cpp |
diff --git a/src/gpu/GrSWMaskHelper.cpp b/src/gpu/GrSWMaskHelper.cpp |
index 54fde0f98972839db20b21d7dc31c22a7946ffb1..5fb944bac4bcf20b2fc645079ea8c6a0e8ee00ae 100644 |
--- a/src/gpu/GrSWMaskHelper.cpp |
+++ b/src/gpu/GrSWMaskHelper.cpp |
@@ -73,21 +73,20 @@ void GrSWMaskHelper::draw(const SkPath& path, const SkStrokeRec& stroke, SkRegio |
paint.setStrokeWidth(stroke.getWidth()); |
} |
} |
+ |
+ SkXfermode* mode = SkXfermode::Create(op_to_mode(op)); |
+ |
+ paint.setXfermode(mode); |
paint.setAntiAlias(antiAlias); |
+ paint.setColor(SkColorSetARGB(alpha, alpha, alpha, alpha)); |
- if (SkRegion::kReplace_Op == op && 0xFF == alpha) { |
- SkASSERT(0xFF == paint.getAlpha()); |
- fDraw.drawPathCoverage(path, paint); |
- } else { |
- paint.setXfermodeMode(op_to_mode(op)); |
- paint.setColor(SkColorSetARGB(alpha, alpha, alpha, alpha)); |
- fDraw.drawPath(path, paint); |
- } |
+ fDraw.drawPath(path, paint); |
+ |
+ SkSafeUnref(mode); |
} |
bool GrSWMaskHelper::init(const SkIRect& resultBounds, |
- const SkMatrix* matrix, |
- bool zeroPixels) { |
+ const SkMatrix* matrix) { |
if (NULL != matrix) { |
fMatrix = *matrix; |
} else { |
@@ -104,9 +103,7 @@ bool GrSWMaskHelper::init(const SkIRect& resultBounds, |
if (!fBM.allocPixels()) { |
return false; |
} |
- if (zeroPixels) { |
- sk_bzero(fBM.getPixels(), fBM.getSafeSize()); |
- } |
+ sk_bzero(fBM.getPixels(), fBM.getSafeSize()); |
sk_bzero(&fDraw, sizeof(fDraw)); |
fRasterClip.setRect(bounds); |
@@ -166,7 +163,7 @@ GrTexture* GrSWMaskHelper::DrawPathMaskToTexture(GrContext* context, |
GrSWMaskHelper helper(context); |
- if (!helper.init(resultBounds, matrix, false)) { |
+ if (!helper.init(resultBounds, matrix)) { |
return NULL; |
} |