| Index: src/gpu/batches/GrAAConvexTessellator.cpp
|
| diff --git a/src/gpu/batches/GrAAConvexTessellator.cpp b/src/gpu/batches/GrAAConvexTessellator.cpp
|
| index 5ef9aefddd4afc46d46c6d76cc7c92e86a409861..c3d25948deeb1345fc3140da6d40ac1a3c526339 100644
|
| --- a/src/gpu/batches/GrAAConvexTessellator.cpp
|
| +++ b/src/gpu/batches/GrAAConvexTessellator.cpp
|
| @@ -835,6 +835,13 @@ void GrAAConvexTessellator::lineTo(SkPoint p, bool isCurve) {
|
| this->popLastPt();
|
| fNorms.pop();
|
| fIsCurve.pop();
|
| + // double-check that the new last point is not a duplicate of the new point. In an ideal
|
| + // world this wouldn't be necessary (since it's only possible for non-convex paths), but
|
| + // floating point precision issues mean it can actually happen on paths that were determined
|
| + // to be convex.
|
| + if (duplicate_pt(p, this->lastPoint())) {
|
| + return;
|
| + }
|
| }
|
| SkScalar initialRingCoverage = fStrokeWidth < 0.0f ? 0.5f : 1.0f;
|
| this->addPt(p, 0.0f, initialRingCoverage, false, isCurve);
|
|
|