Commit graph

13 commits

Author SHA1 Message Date
Adrian Johnson
1220e3c6b8 replace _BSD_SOURCE with _DEFAULT_SOURCE
fixes the warning:

warning: #warning "_BSD_SOURCE and _SVID_SOURCE are deprecated, use _DEFAULT_SOURCE"
2017-09-16 10:04:57 +09:30
Uli Schlachter
9d44136ef8 Revert "stroker: Check for scaling overflow in computing half line widths"
This reverts commit 91b25005d6 because it
causes lots of new crashes due to assertion failures.
2017-05-13 09:37:34 +02:00
Chris Wilson
91b25005d6 stroker: Check for scaling overflow in computing half line widths
Given a combination of a large scaling matrix and a large line, we can
easily generate a half line width that is unrepresentable in our 24.8
fixed-point. This leads to spurious errors later, such as generating
negative height boxes, and so asking pixman to fill to infinity. To
avoid this, we can check for overflow in calculating the half line with,
though we still lack adequate range checking on the final stroke path.

References: https://bugs.webkit.org/show_bug.cgi?id=16793
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: magomez@igalia.com
Tested-by: Bryce Harrington <bryce@osg.samsung.com>
Acked-by: Bryce Harrington <bryce@osg.samsung.com>
2017-05-04 17:44:48 -07:00
Chris Wilson
ee7f560719 stroker: Avoid emitting a miter join for across an elided degenerate segment
Given the criteria of the rectlinear stroker that it only handles
horizontal and vertical line segments, and eliminates degenerate
segments before stroking, we must be careful not to apply a join between
two horizontal segments (for example if the intervening vertical segment
was degenerate and so elided). A miter join between two colinear
segments is empty, yet we were blissfully extending the line caps to
cover the join.

Fixes: outline-tolerance
Bugzilla: https://bugzilla.mozilla.org/show_bug.cgi?id=407107
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-08-20 14:21:23 +01:00
Chris Wilson
a1d4f416e4 path-stroke-boxes: Fix degenerate end-caps for anti-clockwise paths
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-04-29 15:55:16 +01:00
Chris Wilson
c0b523eb65 stroke(boxes): Convert the dash step back into device units before incrementing
Reported-by: Carlos Garcia Campos <carlosgc@gnome.org>
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-04-21 10:18:26 +01:00
Chris Wilson
e9c9e28cd1 Split cairo-box-privates into struct+inlines
References: https://bugs.freedesktop.org/show_bug.cgi?id=48577
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-04-19 12:16:53 +01:00
Chris Wilson
70fc52cb80 stroke(boxes): Apply user scale factors to dash segments
Fixes tests/rectilinear-dash-scale*

Reported-by: Guillaume Ayoub <xovni@wanadoo.fr>
Reported-by: Carlos Garcia Campos <carlosgc@gnome.org>
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=48818
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-04-18 15:29:00 +01:00
Chris Wilson
6f28f0b33c stroke: Fix misuse of half_line_x for vertical caps on dashes
A typo using half_line_x instead of half_line_y when emitting dashed
segments of the rectilinear stroke.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-04-08 11:30:56 +01:00
Chris Wilson
0a778d974f stroke: Adapt rectilinear stroker to handle separable non-unity scaling
Reported-by: Christos Sotiriou <csotiriou@gmail.com>
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-03-19 20:02:50 +00:00
Chris Wilson
2994b0c634 stroke: Use the tessellator to resolve overlapping strokes
If the stroke is too large, the strokes around the box overlap and we
fail to generate the canonical form of the boxes. So if we detect that
the boxes overlap, feed them through the tessellator to reduce them to
canonical form.

Fixes line-width-overlap.

Based on a patch by  Paulo Zanoni <paulo.r.zanoni@intel.com>
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2011-09-29 00:26:06 +01:00
Chris Wilson
af9fbd176b Introduce a new compositor architecture
Having spent the last dev cycle looking at how we could specialize the
compositors for various backends, we once again look for the
commonalities in order to reduce the duplication. In part this is
motivated by the idea that spans is a good interface for both the
existent GL backend and pixman, and so they deserve a dedicated
compositor. xcb/xlib target an identical rendering system and so they
should be using the same compositor, and it should be possible to run
that same compositor locally against pixman to generate reference tests.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>

P.S. This brings massive upheaval (read breakage) I've tried delaying in
order to fix as many things as possible but now this one patch does far,
far, far too much. Apologies in advance for breaking your favourite
backend, but trust me in that the end result will be much better. :)
2011-09-12 08:29:48 +01:00
Chris Wilson
ba406866be stroke: Rely on the tessellator to remove self-intersections
As handling joins/caps between line segments shorter than
half_line_width is tricky.

Rather than also fixing the bug in traps, remove that code. The plan is
to avoiding hitting the traps code, short-circuiting several steps along
the fast rectangular paths.

Fixes line-width-overlap.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2011-08-13 16:41:28 +01:00