aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/gpu/ops
diff options
context:
space:
mode:
Diffstat (limited to 'src/gpu/ops')
-rw-r--r--src/gpu/ops/GrAAConvexPathRenderer.cpp14
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;