summaryrefslogtreecommitdiff
path: root/src/cairo-path-stroke.c
diff options
context:
space:
mode:
authorChris Wilson <chris@chris-wilson.co.uk>2009-08-13 15:57:30 +0100
committerChris Wilson <chris@chris-wilson.co.uk>2009-08-29 08:08:36 +0100
commitdbd9438f5d01666ea118254427c0dc66a519ec3e (patch)
treef0fc9cad413c7032a9030a0aa544ed6a18a4e11d /src/cairo-path-stroke.c
parent60d73da9f2e148e982254c78773f0b925be184ff (diff)
downloadcairo-dbd9438f5d01666ea118254427c0dc66a519ec3e.tar.gz
[stroke] Only mark traps as having intersection if non-empty.
We were hitting an assertion attempting to eliminate intersections inside the rectilinear tessellator for empty strokes. We can avoid this assertion, by only marking the traps as having potential intersections iff it is non-empty.
Diffstat (limited to 'src/cairo-path-stroke.c')
-rw-r--r--src/cairo-path-stroke.c5
1 files changed, 2 insertions, 3 deletions
diff --git a/src/cairo-path-stroke.c b/src/cairo-path-stroke.c
index ba169ae72..69300da3a 100644
--- a/src/cairo-path-stroke.c
+++ b/src/cairo-path-stroke.c
@@ -1493,9 +1493,6 @@ _cairo_rectilinear_stroker_init (cairo_rectilinear_stroker_t *stroker,
_cairo_stroker_dash_init (&stroker->dash, stroke_style);
stroker->has_bounds = FALSE;
-
- /* As we incrementally tessellate, we do not eliminate self-intersections */
- stroker->traps->has_intersections = TRUE;
}
static void
@@ -2032,6 +2029,8 @@ _cairo_path_fixed_stroke_rectilinear_to_traps (const cairo_path_fixed_t *path,
status = _cairo_rectilinear_stroker_emit_segments (&rectilinear_stroker);
traps->is_rectilinear = 1;
+ /* As we incrementally tessellate, we do not eliminate self-intersections */
+ traps->has_intersections = traps->num_traps != 0;
BAIL:
_cairo_rectilinear_stroker_fini (&rectilinear_stroker);