diff options
Diffstat (limited to 'src/gpu/ops')
-rw-r--r-- | src/gpu/ops/GrAAConvexPathRenderer.cpp | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/src/gpu/ops/GrAAConvexPathRenderer.cpp b/src/gpu/ops/GrAAConvexPathRenderer.cpp index c238d102e4..8ca022263b 100644 --- a/src/gpu/ops/GrAAConvexPathRenderer.cpp +++ b/src/gpu/ops/GrAAConvexPathRenderer.cpp @@ -64,7 +64,7 @@ struct Segment { typedef SkTArray<Segment, true> SegmentArray; -static void center_of_mass(const SegmentArray& segments, SkPoint* c) { +static bool center_of_mass(const SegmentArray& segments, SkPoint* c) { SkScalar area = 0; SkPoint center = {0, 0}; int count = segments.count(); @@ -111,15 +111,17 @@ static void center_of_mass(const SegmentArray& segments, SkPoint* c) { // undo the translate of p0 to the origin. *c = center + p0; } - SkASSERT(!SkScalarIsNaN(c->fX) && !SkScalarIsNaN(c->fY)); + return !SkScalarIsNaN(c->fX) && !SkScalarIsNaN(c->fY); } -static void compute_vectors(SegmentArray* segments, +static bool compute_vectors(SegmentArray* segments, SkPoint* fanPt, SkPathPriv::FirstDirection dir, int* vCount, int* iCount) { - center_of_mass(*segments, fanPt); + if (!center_of_mass(*segments, fanPt)) { + return false; + } int count = segments->count(); // Make the normals point towards the outside @@ -167,6 +169,7 @@ static void compute_vectors(SegmentArray* segments, *vCount += 4; *iCount += 6; } + return true; } struct DegenerateTestData { @@ -325,8 +328,7 @@ static bool get_segments(const SkPath& path, if (degenerateData.isDegenerate()) { return false; } else { - compute_vectors(segments, fanPt, dir, vCount, iCount); - return true; + return compute_vectors(segments, fanPt, dir, vCount, iCount); } default: break; |