diff options
author | Chris Wilson <chris@chris-wilson.co.uk> | 2012-03-09 14:06:06 +0000 |
---|---|---|
committer | Chris Wilson <chris@chris-wilson.co.uk> | 2012-03-10 10:46:50 +0000 |
commit | 5ff689c01771165d26cc272d65e01dfb1a1fd57e (patch) | |
tree | 738d5a073289f56ba6e142c0d75a131ae6b270d2 | |
parent | 07b540fd35d7312bbfb362f22dac20f57f6900e6 (diff) | |
download | cairo-5ff689c01771165d26cc272d65e01dfb1a1fd57e.tar.gz |
mono-scan-converter: Use edge->is_vertical flag
The earlier bug found in edge advancement was actually due to the missed
opportunity of not performing the increment when we know the step is
zero.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
-rw-r--r-- | src/cairo-mono-scan-converter.c | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/src/cairo-mono-scan-converter.c b/src/cairo-mono-scan-converter.c index 29d547552..2a9546cf8 100644 --- a/src/cairo-mono-scan-converter.c +++ b/src/cairo-mono-scan-converter.c @@ -337,11 +337,13 @@ row (struct mono_scan_converter *c, unsigned int mask) int xend = I(edge->x.quo); if (--edge->height_left) { - edge->x.quo += edge->dxdy.quo; - edge->x.rem += edge->dxdy.rem; - if (edge->x.rem >= 0) { - ++edge->x.quo; - edge->x.rem -= edge->dy; + if (!edge->vertical) { + edge->x.quo += edge->dxdy.quo; + edge->x.rem += edge->dxdy.rem; + if (edge->x.rem >= 0) { + ++edge->x.quo; + edge->x.rem -= edge->dy; + } } if (edge->x.quo < prev_x) { |