| Index: src/gpu/GrTessellator.cpp
|
| diff --git a/src/gpu/GrTessellator.cpp b/src/gpu/GrTessellator.cpp
|
| index 4024ad0c16d2138b0d4b1476d411d135fec0b206..c0a2d1cfddc7e62636c956d89591efc5f669c396 100644
|
| --- a/src/gpu/GrTessellator.cpp
|
| +++ b/src/gpu/GrTessellator.cpp
|
| @@ -676,7 +676,7 @@ void path_to_contours(const SkPath& path, SkScalar tolerance, const SkRect& clip
|
| if (path.isInverseFillType()) {
|
| SkPoint quad[4];
|
| clipBounds.toQuad(quad);
|
| - for (int i = 0; i < 4; i++) {
|
| + for (int i = 3; i >= 0; i--) {
|
| prev = append_point_to_contour(quad[i], prev, &head, alloc);
|
| }
|
| head->fPrev = prev;
|
| @@ -758,7 +758,7 @@ inline bool apply_fill_type(SkPath::FillType fillType, Poly* poly) {
|
| case SkPath::kEvenOdd_FillType:
|
| return (winding & 1) != 0;
|
| case SkPath::kInverseWinding_FillType:
|
| - return winding == -1;
|
| + return winding == 1;
|
| case SkPath::kInverseEvenOdd_FillType:
|
| return (winding & 1) == 1;
|
| default:
|
| @@ -1637,8 +1637,7 @@ Vertex* contours_to_mesh(Vertex** contours, int contourCnt, bool antialias,
|
| return build_edges(contours, contourCnt, c, alloc);
|
| }
|
|
|
| -Poly* mesh_to_polys(Vertex** vertices, SkPath::FillType fillType, Comparator& c,
|
| - SkChunkAlloc& alloc) {
|
| +Poly* mesh_to_polys(Vertex** vertices, Comparator& c, SkChunkAlloc& alloc) {
|
| if (!vertices || !*vertices) {
|
| return nullptr;
|
| }
|
| @@ -1668,7 +1667,7 @@ Poly* contours_to_polys(Vertex** contours, int contourCnt, SkPath::FillType fill
|
| c.sweep_gt = sweep_gt_vert;
|
| }
|
| Vertex* mesh = contours_to_mesh(contours, contourCnt, antialias, c, alloc);
|
| - Poly* polys = mesh_to_polys(&mesh, fillType, c, alloc);
|
| + Poly* polys = mesh_to_polys(&mesh, c, alloc);
|
| if (antialias) {
|
| EdgeList* boundaries = extract_boundaries(mesh, fillType, alloc);
|
| VertexList aaMesh;
|
| @@ -1678,7 +1677,7 @@ Poly* contours_to_polys(Vertex** contours, int contourCnt, SkPath::FillType fill
|
| boundary_to_aa_mesh(boundary, &aaMesh, c, alloc);
|
| }
|
| }
|
| - return mesh_to_polys(&aaMesh.fHead, SkPath::kWinding_FillType, c, alloc);
|
| + return mesh_to_polys(&aaMesh.fHead, c, alloc);
|
| }
|
| return polys;
|
| }
|
| @@ -1755,7 +1754,7 @@ int PathToTriangles(const SkPath& path, SkScalar tolerance, const SkRect& clipBo
|
| SkChunkAlloc alloc(sizeEstimate);
|
| Poly* polys = path_to_polys(path, tolerance, clipBounds, contourCnt, alloc, antialias,
|
| isLinear);
|
| - SkPath::FillType fillType = path.getFillType();
|
| + SkPath::FillType fillType = antialias ? SkPath::kWinding_FillType : path.getFillType();
|
| int count = count_points(polys, fillType);
|
| if (0 == count) {
|
| return 0;
|
|
|