summaryrefslogtreecommitdiff
path: root/src/cairo-spans-compositor.c
diff options
context:
space:
mode:
authorChris Wilson <chris@chris-wilson.co.uk>2012-02-29 10:03:00 +0000
committerChris Wilson <chris@chris-wilson.co.uk>2012-02-29 10:27:39 +0000
commita49a26f961bc284d496ea7e16dd79e0ddb36c98e (patch)
tree9a6adf5242bba70f4a4e7880da28373a988721d5 /src/cairo-spans-compositor.c
parent3c665102c2b7ccd69aec7658e398ce6dd6dae38b (diff)
downloadcairo-a49a26f961bc284d496ea7e16dd79e0ddb36c98e.tar.gz
gl: Various fixes for glyphs
Not 100% improvement, there are still a variety of failures with GLXWindows, but getting there. At least it fixes more things than its breaks... Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Diffstat (limited to 'src/cairo-spans-compositor.c')
-rw-r--r--src/cairo-spans-compositor.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/cairo-spans-compositor.c b/src/cairo-spans-compositor.c
index b106d73c9..8cc47c285 100644
--- a/src/cairo-spans-compositor.c
+++ b/src/cairo-spans-compositor.c
@@ -314,6 +314,7 @@ fixup_unbounded_boxes (const cairo_spans_compositor_t *compositor,
assert (boxes->is_pixel_aligned);
+ TRACE ((stderr, "%s\n", __FUNCTION__));
if (extents->bounded.width == extents->unbounded.width &&
extents->bounded.height == extents->unbounded.height)
{
@@ -444,6 +445,8 @@ composite_aligned_boxes (const cairo_spans_compositor_t *compositor,
cairo_bool_t no_mask;
cairo_bool_t inplace;
+ TRACE ((stderr, "%s: need_clip_mask=%d, is-bounded=%d\n",
+ __FUNCTION__, need_clip_mask, extents->is_bounded));
if (need_clip_mask && ! extents->is_bounded)
return CAIRO_INT_STATUS_UNSUPPORTED;
@@ -452,6 +455,9 @@ composite_aligned_boxes (const cairo_spans_compositor_t *compositor,
CAIRO_ALPHA_IS_OPAQUE (extents->mask_pattern.solid.color.alpha);
inplace = ! need_clip_mask && op_is_source && no_mask;
+ TRACE ((stderr, "%s: op-is-source=%d [op=%d], no-mask=%d, inplace=%d\n",
+ __FUNCTION__, op_is_source, op, no_mask, inplace));
+
if (op == CAIRO_OPERATOR_SOURCE && (need_clip_mask || ! no_mask)) {
/* SOURCE with a mask is actually a LERP in cairo semantics */
if ((compositor->flags & CAIRO_SPANS_COMPOSITOR_HAS_LERP) == 0)
@@ -582,6 +588,7 @@ composite_boxes (const cairo_spans_compositor_t *compositor,
cairo_int_status_t status;
cairo_box_t box;
+ TRACE ((stderr, "%s\n", __FUNCTION__));
_cairo_box_from_rectangle (&box, &extents->unbounded);
if (composite_needs_clip (extents, &box))
return CAIRO_INT_STATUS_UNSUPPORTED;
@@ -620,6 +627,7 @@ composite_polygon (const cairo_spans_compositor_t *compositor,
cairo_bool_t needs_clip;
cairo_int_status_t status;
+ TRACE ((stderr, "%s\n", __FUNCTION__));
needs_clip = extents->clip->path != NULL || extents->clip->num_boxes > 1;
if (needs_clip) {
return CAIRO_INT_STATUS_UNSUPPORTED;
@@ -688,6 +696,7 @@ clip_and_composite_boxes (const cairo_spans_compositor_t *compositor,
cairo_int_status_t status;
cairo_polygon_t polygon;
+ TRACE ((stderr, "%s\n", __FUNCTION__));
status = trim_extents_to_boxes (extents, boxes);
if (unlikely (status))
return status;
@@ -761,6 +770,8 @@ clip_and_composite_polygon (const cairo_spans_compositor_t *compositor,
{
cairo_int_status_t status;
+ TRACE ((stderr, "%s\n", __FUNCTION__));
+
/* XXX simply uses polygon limits.point extemities, tessellation? */
status = trim_extents_to_polygon (extents, polygon);
if (unlikely (status))
@@ -822,6 +833,7 @@ _cairo_spans_compositor_paint (const cairo_compositor_t *_compositor,
cairo_boxes_t boxes;
cairo_int_status_t status;
+ TRACE ((stderr, "%s\n", __FUNCTION__));
_cairo_clip_steal_boxes (extents->clip, &boxes);
status = clip_and_composite_boxes (compositor, extents, &boxes);
_cairo_clip_unsteal_boxes (extents->clip, &boxes);
@@ -837,6 +849,7 @@ _cairo_spans_compositor_mask (const cairo_compositor_t *_compositor,
cairo_int_status_t status;
cairo_boxes_t boxes;
+ TRACE ((stderr, "%s\n", __FUNCTION__));
_cairo_clip_steal_boxes (extents->clip, &boxes);
status = clip_and_composite_boxes (compositor, extents, &boxes);
_cairo_clip_unsteal_boxes (extents->clip, &boxes);