| Index: src/gpu/GrSWMaskHelper.cpp
|
| diff --git a/src/gpu/GrSWMaskHelper.cpp b/src/gpu/GrSWMaskHelper.cpp
|
| index 5fb944bac4bcf20b2fc645079ea8c6a0e8ee00ae..eefc951e7e4482c58103389fe113a10e5a1ddf8f 100644
|
| --- a/src/gpu/GrSWMaskHelper.cpp
|
| +++ b/src/gpu/GrSWMaskHelper.cpp
|
| @@ -73,16 +73,16 @@ 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));
|
|
|
| - fDraw.drawPath(path, paint);
|
| -
|
| - SkSafeUnref(mode);
|
| + 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);
|
| + }
|
| }
|
|
|
| bool GrSWMaskHelper::init(const SkIRect& resultBounds,
|
|
|