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>
This commit is contained in:
Chris Wilson 2012-02-29 10:03:00 +00:00
parent 3c665102c2
commit a49a26f961
13 changed files with 107 additions and 56 deletions

View file

@ -51,6 +51,7 @@ _cairo_compositor_paint (const cairo_compositor_t *compositor,
cairo_composite_rectangles_t extents;
cairo_int_status_t status;
TRACE ((stderr, "%s\n", __FUNCTION__));
status = _cairo_composite_rectangles_init_for_paint (&extents, surface,
op, source,
clip);
@ -86,6 +87,7 @@ _cairo_compositor_mask (const cairo_compositor_t *compositor,
cairo_composite_rectangles_t extents;
cairo_int_status_t status;
TRACE ((stderr, "%s\n", __FUNCTION__));
status = _cairo_composite_rectangles_init_for_mask (&extents, surface,
op, source, mask,
clip);
@ -126,6 +128,7 @@ _cairo_compositor_stroke (const cairo_compositor_t *compositor,
cairo_composite_rectangles_t extents;
cairo_int_status_t status;
TRACE ((stderr, "%s\n", __FUNCTION__));
status = _cairo_composite_rectangles_init_for_stroke (&extents, surface,
op, source,
path, style, ctm,
@ -167,6 +170,7 @@ _cairo_compositor_fill (const cairo_compositor_t *compositor,
cairo_composite_rectangles_t extents;
cairo_int_status_t status;
TRACE ((stderr, "%s\n", __FUNCTION__));
status = _cairo_composite_rectangles_init_for_fill (&extents, surface,
op, source, path,
clip);
@ -206,6 +210,7 @@ _cairo_compositor_glyphs (const cairo_compositor_t *compositor,
cairo_bool_t overlap;
cairo_int_status_t status;
TRACE ((stderr, "%s\n", __FUNCTION__));
status = _cairo_composite_rectangles_init_for_glyphs (&extents, surface,
op, source,
scaled_font,

View file

@ -53,6 +53,7 @@ _cairo_fallback_compositor_paint (const cairo_compositor_t *_compositor,
cairo_surface_t *image;
cairo_int_status_t status;
TRACE ((stderr, "%s\n", __FUNCTION__));
image = cairo_surface_map_to_image (extents->surface, &extents->unbounded);
status = _cairo_surface_offset_paint (image,
extents->unbounded.x,
@ -72,6 +73,7 @@ _cairo_fallback_compositor_mask (const cairo_compositor_t *_compositor,
cairo_surface_t *image;
cairo_int_status_t status;
TRACE ((stderr, "%s\n", __FUNCTION__));
image = cairo_surface_map_to_image (extents->surface, &extents->unbounded);
status = _cairo_surface_offset_mask (image,
extents->unbounded.x,
@ -98,6 +100,7 @@ _cairo_fallback_compositor_stroke (const cairo_compositor_t *_compositor,
cairo_surface_t *image;
cairo_int_status_t status;
TRACE ((stderr, "%s\n", __FUNCTION__));
image = cairo_surface_map_to_image (extents->surface, &extents->unbounded);
status = _cairo_surface_offset_stroke (image,
extents->unbounded.x,
@ -125,6 +128,7 @@ _cairo_fallback_compositor_fill (const cairo_compositor_t *_compositor,
cairo_surface_t *image;
cairo_int_status_t status;
TRACE ((stderr, "%s\n", __FUNCTION__));
image = cairo_surface_map_to_image (extents->surface, &extents->unbounded);
status = _cairo_surface_offset_fill (image,
extents->unbounded.x,
@ -150,6 +154,7 @@ _cairo_fallback_compositor_glyphs (const cairo_compositor_t *_compositor,
cairo_surface_t *image;
cairo_int_status_t status;
TRACE ((stderr, "%s\n", __FUNCTION__));
image = cairo_surface_map_to_image (extents->surface, &extents->unbounded);
status = _cairo_surface_offset_glyphs (image,
extents->unbounded.x,

View file

@ -768,8 +768,7 @@ cairo_status_t
_cairo_gl_composite_init (cairo_gl_composite_t *setup,
cairo_operator_t op,
cairo_gl_surface_t *dst,
cairo_bool_t assume_component_alpha,
const cairo_rectangle_int_t *rect)
cairo_bool_t assume_component_alpha)
{
memset (setup, 0, sizeof (cairo_gl_composite_t));

View file

@ -234,13 +234,17 @@ render_glyphs (cairo_gl_surface_t *dst,
cairo_int_status_t status;
int i = 0;
TRACE ((stderr, "%s (%d, %d)x(%d, %d)\n", __FUNCTION__,
info->extents.x, info->extents.y,
info->extents.width, info->extents.height));
*has_component_alpha = FALSE;
status = _cairo_gl_context_acquire (dst->base.device, &ctx);
if (unlikely (status))
return status;
status = _cairo_gl_composite_init (&setup, op, dst, TRUE, &info->extents);
status = _cairo_gl_composite_init (&setup, op, dst, TRUE);
if (unlikely (status))
goto FINISH;
@ -281,11 +285,8 @@ render_glyphs (cairo_gl_surface_t *dst,
_cairo_gl_composite_set_mask_operand (&setup, &cache->surface->operand);
*has_component_alpha |= cache->surface->operand.texture.attributes.has_component_alpha;
/* XXX: _cairo_gl_composite_begin() acquires the context a
* second time. Need to refactor this loop so this doesn't happen.
*/
/* XXX Shoot me. */
status = _cairo_gl_composite_begin (&setup, &ctx);
status = _cairo_gl_context_release (ctx, status);
if (unlikely (status))
goto FINISH;
@ -318,8 +319,8 @@ render_glyphs (cairo_gl_surface_t *dst,
x_offset = scaled_glyph->surface->base.device_transform.x0;
y_offset = scaled_glyph->surface->base.device_transform.y0;
x1 = _cairo_lround (info->glyphs[i].x - x_offset);
y1 = _cairo_lround (info->glyphs[i].y - y_offset);
x1 = _cairo_lround (info->glyphs[i].x - x_offset - dst_x);
y1 = _cairo_lround (info->glyphs[i].y - y_offset - dst_y);
x2 = x1 + scaled_glyph->surface->width;
y2 = y1 + scaled_glyph->surface->height;
@ -340,6 +341,7 @@ render_glyphs (cairo_gl_surface_t *dst,
static cairo_int_status_t
render_glyphs_via_mask (cairo_gl_surface_t *dst,
int dst_x, int dst_y,
cairo_operator_t op,
cairo_surface_t *source,
cairo_composite_glyphs_info_t *info)
@ -347,7 +349,8 @@ render_glyphs_via_mask (cairo_gl_surface_t *dst,
cairo_surface_t *mask;
cairo_status_t status;
cairo_bool_t has_component_alpha;
int i;
TRACE ((stderr, "%s\n", __FUNCTION__));
/* XXX: For non-CA, this should be CAIRO_CONTENT_ALPHA to save memory */
mask = cairo_gl_surface_create (dst->base.device,
@ -357,12 +360,8 @@ render_glyphs_via_mask (cairo_gl_surface_t *dst,
if (unlikely (mask->status))
return mask->status;
for (i = 0; i < info->num_glyphs; i++) {
info->glyphs[i].x -= info->extents.x;
info->glyphs[i].y -= info->extents.y;
}
status = render_glyphs ((cairo_gl_surface_t *) mask, 0, 0,
status = render_glyphs ((cairo_gl_surface_t *) mask,
info->extents.x, info->extents.y,
CAIRO_OPERATOR_ADD, NULL,
info, &has_component_alpha);
if (likely (status == CAIRO_STATUS_SUCCESS)) {
@ -372,22 +371,23 @@ render_glyphs_via_mask (cairo_gl_surface_t *dst,
mask->is_clear = FALSE;
_cairo_pattern_init_for_surface (&mask_pattern, mask);
mask_pattern.base.has_component_alpha = has_component_alpha;
mask_pattern.base.filter = CAIRO_FILTER_NEAREST;
mask_pattern.base.extend = CAIRO_EXTEND_NONE;
cairo_matrix_init_translate (&mask_pattern.base.matrix,
-info->extents.x, -info->extents.y);
dst_x-info->extents.x, dst_y-info->extents.y);
_cairo_pattern_init_for_surface (&source_pattern, source);
cairo_matrix_init_translate (&source_pattern.base.matrix,
dst_x-info->extents.x, dst_y-info->extents.y);
status = _cairo_surface_mask (&dst->base, op,
&source_pattern.base, &mask_pattern.base,
&source_pattern.base,
&mask_pattern.base,
NULL);
_cairo_pattern_fini (&mask_pattern.base);
_cairo_pattern_fini (&source_pattern.base);
} else {
for (i = 0; i < info->num_glyphs; i++) {
info->glyphs[i].x += info->extents.x;
info->glyphs[i].y += info->extents.y;
}
}
cairo_surface_destroy (mask);
@ -425,6 +425,8 @@ _cairo_gl_composite_glyphs (void *_dst,
cairo_bool_t has_component_alpha;
int i;
TRACE ((stderr, "%s\n", __FUNCTION__));
/* If any of the glyphs are component alpha, we have to go through a mask,
* since only _cairo_gl_surface_composite() currently supports component
* alpha.
@ -445,7 +447,8 @@ _cairo_gl_composite_glyphs (void *_dst,
}
if (info->use_mask) {
return render_glyphs_via_mask (dst, op, _src, info);
return render_glyphs_via_mask (dst, dst_x, dst_y,
op, _src, info);
} else {
return render_glyphs (dst, dst_x, dst_y,
op, _src, info,

View file

@ -318,8 +318,7 @@ _cairo_gl_msaa_compositor_stroke (const cairo_compositor_t *compositor,
status = _cairo_gl_composite_init (&info.setup,
composite->op,
dst,
FALSE, /* assume_component_alpha */
&composite->bounded);
FALSE /* assume_component_alpha */);
if (unlikely (status))
return status;
@ -393,8 +392,7 @@ _cairo_gl_msaa_compositor_fill (const cairo_compositor_t *compositor,
status = _cairo_gl_composite_init (&setup,
composite->op,
dst,
FALSE, /* assume_component_alpha */
&composite->bounded);
FALSE /* assume_component_alpha */);
if (unlikely (status))
goto cleanup_traps;

View file

@ -174,7 +174,7 @@ _cairo_gl_subsurface_operand_init (cairo_gl_operand_t *operand,
}
surface = (cairo_gl_surface_t *) sub->target;
if (surface->base.device != dst->base.device)
if (surface->base.device && surface->base.device != dst->base.device)
return CAIRO_INT_STATUS_UNSUPPORTED;
/* Translate the matrix from
@ -220,7 +220,7 @@ _cairo_gl_surface_operand_init (cairo_gl_operand_t *operand,
return CAIRO_INT_STATUS_UNSUPPORTED;
}
if (surface->base.device != dst->base.device)
if (surface->base.device && surface->base.device != dst->base.device)
return CAIRO_INT_STATUS_UNSUPPORTED;
*operand = surface->operand;
@ -307,6 +307,14 @@ _cairo_gl_solid_operand_init (cairo_gl_operand_t *operand,
operand->constant.color[3] = color->alpha;
}
void
_cairo_gl_operand_translate (cairo_gl_operand_t *operand,
double tx, double ty)
{
operand->texture.attributes.matrix.x0 -= tx * operand->texture.attributes.matrix.xx;
operand->texture.attributes.matrix.y0 -= ty * operand->texture.attributes.matrix.yy;
}
static cairo_status_t
_cairo_gl_gradient_operand_init (cairo_gl_operand_t *operand,
const cairo_pattern_t *pattern,
@ -456,6 +464,7 @@ _cairo_gl_operand_init (cairo_gl_operand_t *operand,
{
cairo_int_status_t status;
TRACE ((stderr, "%s: type=%d\n", __FUNCTION__, pattern->type));
switch (pattern->type) {
case CAIRO_PATTERN_TYPE_SOLID:
_cairo_gl_solid_operand_init (operand,

View file

@ -449,8 +449,7 @@ cairo_private cairo_status_t
_cairo_gl_composite_init (cairo_gl_composite_t *setup,
cairo_operator_t op,
cairo_gl_surface_t *dst,
cairo_bool_t has_component_alpha,
const cairo_rectangle_int_t *rect);
cairo_bool_t has_component_alpha);
cairo_private void
_cairo_gl_composite_fini (cairo_gl_composite_t *setup);
@ -670,6 +669,10 @@ cairo_private void
_cairo_gl_operand_copy (cairo_gl_operand_t *dst,
const cairo_gl_operand_t *src);
cairo_private void
_cairo_gl_operand_translate (cairo_gl_operand_t *operand,
double tx, double ty);
cairo_private void
_cairo_gl_operand_destroy (cairo_gl_operand_t *operand);

View file

@ -65,6 +65,7 @@ _cairo_gl_pattern_to_source (cairo_surface_t *dst,
cairo_gl_source_t *source;
cairo_int_status_t status;
TRACE ((stderr, "%s\n", __FUNCTION__));
if (pattern == NULL)
return _cairo_gl_white_source ();

View file

@ -240,13 +240,14 @@ emit_aligned_boxes (cairo_gl_context_t *ctx,
const struct _cairo_boxes_chunk *chunk;
int i;
TRACE ((stderr, "%s: num_boxes=%d\n", __FUNCTION__, boxes->num_boxes));
for (chunk = &boxes->chunks; chunk; chunk = chunk->next) {
for (i = 0; i < chunk->count; i++) {
int x1 = _cairo_fixed_integer_part (chunk->base[i].p1.x);
int y1 = _cairo_fixed_integer_part (chunk->base[i].p1.y);
int x2 = _cairo_fixed_integer_part (chunk->base[i].p2.x);
int y2 = _cairo_fixed_integer_part (chunk->base[i].p2.y);
_cairo_gl_composite_emit_rect (ctx, x1, y1, x2, y2, 0);
_cairo_gl_composite_emit_rect (ctx, x1, y1, x2, y2, 255);
}
}
}
@ -261,7 +262,8 @@ fill_boxes (void *_dst,
cairo_gl_context_t *ctx;
cairo_int_status_t status;
status = _cairo_gl_composite_init (&setup, op, _dst, FALSE, NULL);
TRACE ((stderr, "%s\n", __FUNCTION__));
status = _cairo_gl_composite_init (&setup, op, _dst, FALSE);
if (unlikely (status))
goto FAIL;
@ -297,15 +299,19 @@ composite_boxes (void *_dst,
cairo_gl_context_t *ctx;
cairo_int_status_t status;
status = _cairo_gl_composite_init (&setup, op, _dst, FALSE, extents);
TRACE ((stderr, "%s mask=(%d,%d), dst=(%d, %d)\n", __FUNCTION__,
mask_x, mask_y, dst_x, dst_y));
status = _cairo_gl_composite_init (&setup, op, _dst, FALSE);
if (unlikely (status))
goto FAIL;
_cairo_gl_composite_set_source_operand (&setup,
source_to_operand (abstract_src));
_cairo_gl_operand_translate (&setup.mask, -src_x, -src_y);
_cairo_gl_composite_set_mask_operand (&setup,
source_to_operand (abstract_mask));
_cairo_gl_operand_translate (&setup.mask, -mask_x, -mask_y);
status = _cairo_gl_composite_begin (&setup, &ctx);
if (unlikely (status))
@ -346,7 +352,7 @@ _cairo_gl_span_renderer_init (cairo_abstract_span_renderer_t *_r,
status = _cairo_gl_composite_init (&r->setup,
op, (cairo_gl_surface_t *)composite->surface,
FALSE, &composite->unbounded);
FALSE);
if (unlikely (status))
goto FAIL;
@ -416,21 +422,24 @@ _cairo_gl_span_renderer_fini (cairo_abstract_span_renderer_t *_r,
const cairo_compositor_t *
_cairo_gl_span_compositor_get (void)
{
static cairo_spans_compositor_t compositor;
static cairo_spans_compositor_t spans;
static cairo_compositor_t shape;
if (compositor.base.delegate == NULL) {
if (spans.base.delegate == NULL) {
/* The fallback to traps here is essentially just for glyphs... */
_cairo_spans_compositor_init (&compositor,
_cairo_gl_traps_compositor_get());
_cairo_shape_mask_compositor_init (&shape,
_cairo_gl_traps_compositor_get());
shape.glyphs = NULL;
compositor.fill_boxes = fill_boxes;
//compositor.check_composite_boxes = check_composite_boxes;
compositor.pattern_to_surface = _cairo_gl_pattern_to_source;
compositor.composite_boxes = composite_boxes;
//compositor.check_span_renderer = check_span_renderer;
compositor.renderer_init = _cairo_gl_span_renderer_init;
compositor.renderer_fini = _cairo_gl_span_renderer_fini;
_cairo_spans_compositor_init (&spans, &shape);
spans.fill_boxes = fill_boxes;
//spans.check_composite_boxes = check_composite_boxes;
spans.pattern_to_surface = _cairo_gl_pattern_to_source;
spans.composite_boxes = composite_boxes;
//spans.check_span_renderer = check_span_renderer;
spans.renderer_init = _cairo_gl_span_renderer_init;
spans.renderer_fini = _cairo_gl_span_renderer_fini;
}
return &compositor.base;
return &spans.base;
}

View file

@ -758,8 +758,8 @@ _cairo_gl_surface_fill_alpha_channel (cairo_gl_surface_t *dst,
_cairo_gl_composite_flush (ctx);
glColorMask(GL_FALSE, GL_FALSE, GL_FALSE, GL_TRUE);
status = _cairo_gl_composite_init (&setup, CAIRO_OPERATOR_SOURCE, dst,
FALSE, NULL);
status = _cairo_gl_composite_init (&setup, CAIRO_OPERATOR_SOURCE,
dst, FALSE);
if (unlikely (status))
goto CLEANUP;

View file

@ -132,7 +132,7 @@ fill_boxes (void *_dst,
cairo_gl_context_t *ctx;
cairo_int_status_t status;
status = _cairo_gl_composite_init (&setup, op, _dst, FALSE, NULL);
status = _cairo_gl_composite_init (&setup, op, _dst, FALSE);
if (unlikely (status))
goto FAIL;
@ -168,7 +168,7 @@ composite_boxes (void *_dst,
cairo_gl_context_t *ctx;
cairo_int_status_t status;
status = _cairo_gl_composite_init (&setup, op, _dst, FALSE, extents);
status = _cairo_gl_composite_init (&setup, op, _dst, FALSE);
if (unlikely (status))
goto FAIL;
@ -208,7 +208,7 @@ composite (void *_dst,
cairo_gl_context_t *ctx;
cairo_int_status_t status;
status = _cairo_gl_composite_init (&setup, op, _dst, FALSE, NULL);
status = _cairo_gl_composite_init (&setup, op, _dst, FALSE);
if (unlikely (status))
goto FAIL;
@ -279,7 +279,7 @@ traps_to_operand (void *_dst,
cairo_surface_pattern_t pattern;
cairo_status_t status;
pixman_format = antialias != CAIRO_ANTIALIAS_NONE ? PIXMAN_a8 : PIXMAN_a1,
pixman_format = antialias != CAIRO_ANTIALIAS_NONE ? PIXMAN_a8 : PIXMAN_a1;
pixman_image = pixman_image_create_bits (pixman_format,
extents->width,
extents->height,
@ -350,7 +350,7 @@ composite_traps (void *_dst,
cairo_gl_context_t *ctx;
cairo_int_status_t status;
status = _cairo_gl_composite_init (&setup, op, _dst, FALSE, NULL);
status = _cairo_gl_composite_init (&setup, op, _dst, FALSE);
if (unlikely (status))
goto FAIL;
@ -447,7 +447,7 @@ composite_tristrip (void *_dst,
if (unlikely (mask->base.status))
return mask->base.status;
status = _cairo_gl_composite_init (&setup, op, _dst, FALSE, NULL);
status = _cairo_gl_composite_init (&setup, op, _dst, FALSE);
if (unlikely (status))
goto FAIL;

View file

@ -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);

View file

@ -1818,6 +1818,7 @@ _cairo_surface_paint (cairo_surface_t *surface,
{
cairo_int_status_t status;
TRACE ((stderr, "%s\n", __FUNCTION__));
if (unlikely (surface->status))
return surface->status;
@ -1851,6 +1852,7 @@ _cairo_surface_mask (cairo_surface_t *surface,
{
cairo_int_status_t status;
TRACE ((stderr, "%s\n", __FUNCTION__));
if (unlikely (surface->status))
return surface->status;
@ -1905,6 +1907,7 @@ _cairo_surface_fill_stroke (cairo_surface_t *surface,
{
cairo_int_status_t status;
TRACE ((stderr, "%s\n", __FUNCTION__));
if (unlikely (surface->status))
return surface->status;
@ -1982,6 +1985,7 @@ _cairo_surface_stroke (cairo_surface_t *surface,
{
cairo_int_status_t status;
TRACE ((stderr, "%s\n", __FUNCTION__));
if (unlikely (surface->status))
return surface->status;
@ -2022,6 +2026,7 @@ _cairo_surface_fill (cairo_surface_t *surface,
{
cairo_int_status_t status;
TRACE ((stderr, "%s\n", __FUNCTION__));
if (unlikely (surface->status))
return surface->status;
@ -2228,6 +2233,7 @@ _cairo_surface_show_text_glyphs (cairo_surface_t *surface,
cairo_int_status_t status;
cairo_scaled_font_t *dev_scaled_font = scaled_font;
TRACE ((stderr, "%s\n", __FUNCTION__));
if (unlikely (surface->status))
return surface->status;