| Index: src/gpu/batches/GrRectBatchFactory.cpp
|
| diff --git a/src/gpu/batches/GrRectBatchFactory.cpp b/src/gpu/batches/GrRectBatchFactory.cpp
|
| index eed18ad419637e788065495cf2729ae748fb6fa1..f34a8c058a2c307783dc2c3eb522ea924b1d634c 100644
|
| --- a/src/gpu/batches/GrRectBatchFactory.cpp
|
| +++ b/src/gpu/batches/GrRectBatchFactory.cpp
|
| @@ -33,13 +33,6 @@ GrDrawBatch* CreateAAStroke(GrColor color,
|
| const SkScalar rx = SkScalarMul(dx, SK_ScalarHalf);
|
| const SkScalar ry = SkScalarMul(dy, SK_ScalarHalf);
|
|
|
| - SkScalar spare;
|
| - {
|
| - SkScalar w = devRect.width() - dx;
|
| - SkScalar h = devRect.height() - dy;
|
| - spare = SkTMin(w, h);
|
| - }
|
| -
|
| SkRect devOutside(devRect);
|
| devOutside.outset(rx, ry);
|
|
|
| @@ -51,13 +44,25 @@ GrDrawBatch* CreateAAStroke(GrColor color,
|
| miterStroke = false;
|
| }
|
|
|
| - if (spare <= 0 && miterStroke) {
|
| - return CreateAAFill(color, viewMatrix, devOutside, devOutside);
|
| - }
|
| -
|
| SkRect devInside(devRect);
|
| devInside.inset(rx, ry);
|
|
|
| + // If we have a degenerate stroking rect(ie the stroke is larger than inner rect) then we
|
| + // make a degenerate inside rect to avoid double hitting. We will also jam all of the points
|
| + // together when we render these rects.
|
| + SkScalar spare;
|
| + {
|
| + SkScalar w = devRect.width() - dx;
|
| + SkScalar h = devRect.height() - dy;
|
| + spare = SkTMin(w, h);
|
| + }
|
| +
|
| + bool degenerate = spare <= 0;
|
| + if (degenerate) {
|
| + devInside.fLeft = devInside.fRight = devRect.centerX();
|
| + devInside.fTop = devInside.fBottom = devRect.centerY();
|
| + }
|
| +
|
| SkRect devOutsideAssist(devRect);
|
|
|
| // For bevel-stroke, use 2 SkRect instances(devOutside and devOutsideAssist)
|
| @@ -69,7 +74,7 @@ GrDrawBatch* CreateAAStroke(GrColor color,
|
| }
|
|
|
| return GrAAStrokeRectBatch::Create(color, viewMatrix, devOutside, devOutsideAssist, devInside,
|
| - miterStroke);
|
| + miterStroke, degenerate);
|
| }
|
|
|
| GrDrawBatch* CreateAAFillNestedRects(GrColor color,
|
| @@ -82,11 +87,8 @@ GrDrawBatch* CreateAAFillNestedRects(GrColor color,
|
| viewMatrix.mapRect(&devOutside, rects[0]);
|
| viewMatrix.mapRect(&devInside, rects[1]);
|
|
|
| - if (devInside.isEmpty()) {
|
| - return CreateAAFill(color, viewMatrix, devOutside, devOutside);
|
| - }
|
| -
|
| - return GrAAStrokeRectBatch::Create(color, viewMatrix, devOutside, devOutside, devInside, true);
|
| + return GrAAStrokeRectBatch::Create(color, viewMatrix, devOutside, devOutside, devInside, true,
|
| + devInside.isEmpty());
|
| }
|
|
|
| };
|
|
|