| Index: src/gpu/GrTessellatingPathRenderer.cpp
|
| diff --git a/src/gpu/GrTessellatingPathRenderer.cpp b/src/gpu/GrTessellatingPathRenderer.cpp
|
| index be28a69106a4a60f708bd36b70e3407e3c98e1a1..a9ae6fa4e13dee3e473c2498378a81cc9e82922e 100644
|
| --- a/src/gpu/GrTessellatingPathRenderer.cpp
|
| +++ b/src/gpu/GrTessellatingPathRenderer.cpp
|
| @@ -958,13 +958,19 @@ void split_edge(Edge* edge, Vertex* v, Edge** activeEdges, SkChunkAlloc& alloc)
|
| LOG("splitting edge (%g -> %g) at vertex %g (%g, %g)\n",
|
| edge->fTop->fID, edge->fBottom->fID,
|
| v->fID, v->fPoint.fX, v->fPoint.fY);
|
| - Edge* newEdge = ALLOC_NEW(Edge, (v, edge->fBottom, edge->fWinding), alloc);
|
| - insert_edge_below(newEdge, v);
|
| - insert_edge_above(newEdge, edge->fBottom);
|
| - set_bottom(edge, v, activeEdges);
|
| - cleanup_active_edges(edge, activeEdges, alloc);
|
| - fix_active_state(newEdge, activeEdges);
|
| - merge_collinear_edges(newEdge, activeEdges);
|
| + if (sweep_lt(v->fPoint, edge->fTop->fPoint)) {
|
| + set_top(edge, v, activeEdges);
|
| + } else if (sweep_gt(v->fPoint, edge->fBottom->fPoint)) {
|
| + set_bottom(edge, v, activeEdges);
|
| + } else {
|
| + Edge* newEdge = ALLOC_NEW(Edge, (v, edge->fBottom, edge->fWinding), alloc);
|
| + insert_edge_below(newEdge, v);
|
| + insert_edge_above(newEdge, edge->fBottom);
|
| + set_bottom(edge, v, activeEdges);
|
| + cleanup_active_edges(edge, activeEdges, alloc);
|
| + fix_active_state(newEdge, activeEdges);
|
| + merge_collinear_edges(newEdge, activeEdges);
|
| + }
|
| }
|
|
|
| void merge_vertices(Vertex* src, Vertex* dst, Vertex** head, SkChunkAlloc& alloc) {
|
|
|