From ba21f213560fa239a02ae28af4eb1d3a6b7254e5 Mon Sep 17 00:00:00 2001 From: M Joonas Pihlaja Date: Sun, 13 Sep 2009 18:21:38 +0100 Subject: [trace] Don't trace internal cairo calls on Solaris. On various configurations of Solaris cairo-trace likes to trace internal calls to the API from within cairo and cairo-trace itself. On Linux the slim_hidden_proto stuff avoids this by name mangling and symbol alias magic, but on Solaris that doesn't work so we're left with either no hidden symbols at all or using normal ELF hidden symbol attributes, but neither of those prevent internal calls to cairo from being traced of course. This commit provides a per-thread entry/exit trace counter for use when we can't use name mangling to hide internal API calls. As a side-effect it may hide actual client API calls from callback functions called by cairo, but such use cases ought to be rare. --- util/cairo-trace/trace.c | 465 +++++++++++++++++++++++++++++++++-------------- 1 file changed, 327 insertions(+), 138 deletions(-) diff --git a/util/cairo-trace/trace.c b/util/cairo-trace/trace.c index a3615e3c..a3b36976 100644 --- a/util/cairo-trace/trace.c +++ b/util/cairo-trace/trace.c @@ -179,13 +179,27 @@ static bool _line_info; static bool _mark_dirty; static const cairo_user_data_key_t destroy_key; static pthread_once_t once_control = PTHREAD_ONCE_INIT; +static pthread_key_t counter_key; static void _init_trace (void); -#define ENSURE_INIT_TRACE() pthread_once (&once_control, _init_trace); + +#define INIT_TRACE_ONCE() pthread_once (&once_control, _init_trace) + +#if __GNUC__ >= 3 && defined(__ELF__) && !defined(__sun) +# define _enter_trace() INIT_TRACE_ONCE () +# define _exit_trace() do { } while (0) +# define _should_trace() 1 +# define USE_ENTER_EXIT 0 +#else +static void _enter_trace (void); +static void _exit_trace (void); +static bool _should_trace (void); +# define USE_ENTER_EXIT 1 +#endif #if HAVE_BUILTIN_RETURN_ADDRESS && CAIRO_HAS_SYMBOL_LOOKUP #define _emit_line_info() do { \ - if (_line_info && _write_lock ()) { \ + if (_line_info && _write_lock ()) { \ void *addr = __builtin_return_address(0); \ char caller[1024]; \ _trace_printf ("%% %s() called by %s\n", __FUNCTION__, \ @@ -398,10 +412,43 @@ _object_create (Type *type, const void *ptr) return obj; } +#if USE_ENTER_EXIT +static int * +_get_counter (void) +{ + int *counter = pthread_getspecific (counter_key); + if (counter == NULL) { + counter = calloc(1, sizeof(int)); + pthread_setspecific (counter_key, counter); + } + return counter; +} + +static void +_enter_trace (void) +{ + INIT_TRACE_ONCE (); + _get_counter ()[0]++; +} + +static void +_exit_trace (void) +{ + _get_counter ()[0]--; +} + +static bool +_should_trace (void) +{ + return _get_counter ()[0] <= 1; +} +#endif /* USE_ENTER_EXIT */ + static void _init_trace (void) { pthread_mutex_init (&Types.mutex, NULL); + pthread_key_create (&counter_key, free); _type_create ("unclassed", NONE, ""); _type_create ("cairo_t", CONTEXT, "c"); @@ -434,6 +481,7 @@ _fini_trace (void) } } + pthread_key_delete (counter_key); pthread_mutex_destroy (&Types.mutex); } @@ -546,6 +594,8 @@ _trace_vprintf (const char *fmt, va_list ap) cairo_bool_t var_width; int ret_ignored; + assert (_should_trace ()); + f = fmt; p = buffer; while (*f != '\0') { @@ -778,6 +828,9 @@ _write_lock (void) if (_error) return false; + if (! _should_trace ()) + return false; + if (! _init_logfile ()) return false; @@ -1259,6 +1312,8 @@ _write_base85_data (struct _data_stream *stream, unsigned char five_tuple[5]; int ret; + assert (_should_trace ()); + while (length--) { stream->four_tuple[stream->base85_pending++] = *data++; if (stream->base85_pending == 4) { @@ -1342,6 +1397,8 @@ _write_base85_data_end (struct _data_stream *stream) unsigned char five_tuple[5]; int ret; + assert (_should_trace ()); + if (stream->base85_pending) { memset (stream->four_tuple + stream->base85_pending, 0, 4 - stream->base85_pending); @@ -1799,7 +1856,7 @@ cairo_create (cairo_surface_t *target) long surface_id; long context_id; - ENSURE_INIT_TRACE (); + _enter_trace (); ret = DLCALL (cairo_create, target); context_id = _create_context_id (ret); @@ -1822,34 +1879,38 @@ cairo_create (cairo_surface_t *target) _write_unlock (); } + _exit_trace (); return ret; } void cairo_save (cairo_t *cr) -{ - ENSURE_INIT_TRACE (); +{ + _enter_trace (); _emit_line_info (); _emit_cairo_op (cr, "save\n"); DLCALL (cairo_save, cr); + _exit_trace (); } void cairo_restore (cairo_t *cr) { - ENSURE_INIT_TRACE (); + _enter_trace (); _emit_line_info (); _emit_cairo_op (cr, "restore\n"); DLCALL (cairo_restore, cr); + _exit_trace (); } void cairo_push_group (cairo_t *cr) { - ENSURE_INIT_TRACE (); + _enter_trace (); _emit_line_info (); _emit_cairo_op (cr, "//COLOR_ALPHA push-group\n"); DLCALL (cairo_push_group, cr); + _exit_trace (); } static const char * @@ -1866,10 +1927,11 @@ _content_to_string (cairo_content_t content) void cairo_push_group_with_content (cairo_t *cr, cairo_content_t content) { - ENSURE_INIT_TRACE (); + _enter_trace (); _emit_line_info (); _emit_cairo_op (cr, "//%s push-group\n", _content_to_string (content)); DLCALL (cairo_push_group_with_content, cr, content); + _exit_trace (); } cairo_pattern_t * @@ -1877,7 +1939,7 @@ cairo_pop_group (cairo_t *cr) { cairo_pattern_t *ret; - ENSURE_INIT_TRACE (); + _enter_trace (); ret = DLCALL (cairo_pop_group, cr); @@ -1885,16 +1947,18 @@ cairo_pop_group (cairo_t *cr) _emit_cairo_op (cr, "pop-group %% p%ld\n", _create_pattern_id (ret)); _push_operand (PATTERN, ret); + _exit_trace (); return ret; } void cairo_pop_group_to_source (cairo_t *cr) { - ENSURE_INIT_TRACE (); + _enter_trace (); _emit_line_info (); _emit_cairo_op (cr, "pop-group set-source\n"); DLCALL (cairo_pop_group_to_source, cr); + _exit_trace (); } static const char * @@ -1939,29 +2003,32 @@ _operator_to_string (cairo_operator_t op) void cairo_set_operator (cairo_t *cr, cairo_operator_t op) { - ENSURE_INIT_TRACE (); + _enter_trace (); _emit_line_info (); _emit_cairo_op (cr, "//%s set-operator\n", _operator_to_string (op)); DLCALL (cairo_set_operator, cr, op); + _exit_trace (); } void cairo_set_source_rgb (cairo_t *cr, double red, double green, double blue) { - ENSURE_INIT_TRACE (); + _enter_trace (); _emit_line_info (); _emit_cairo_op (cr, "%g %g %g set-source-rgb\n", red, green, blue); DLCALL (cairo_set_source_rgb, cr, red, green, blue); + _exit_trace (); } void cairo_set_source_rgba (cairo_t *cr, double red, double green, double blue, double alpha) { - ENSURE_INIT_TRACE (); + _enter_trace (); _emit_line_info (); _emit_cairo_op (cr, "%g %g %g %g set-source-rgba\n", red, green, blue, alpha); DLCALL (cairo_set_source_rgba, cr, red, green, blue, alpha); + _exit_trace (); } static void @@ -2027,7 +2094,7 @@ _emit_source_image_rectangle (cairo_surface_t *surface, void cairo_set_source_surface (cairo_t *cr, cairo_surface_t *surface, double x, double y) { - ENSURE_INIT_TRACE (); + _enter_trace (); _emit_line_info (); if (cr != NULL && surface != NULL && _write_lock ()) { if (_is_current (SURFACE, surface, 0) && @@ -2058,12 +2125,13 @@ cairo_set_source_surface (cairo_t *cr, cairo_surface_t *surface, double x, doubl } DLCALL (cairo_set_source_surface, cr, surface, x, y); + _exit_trace (); } void cairo_set_source (cairo_t *cr, cairo_pattern_t *source) { - ENSURE_INIT_TRACE (); + _enter_trace (); _emit_line_info (); if (cr != NULL && source != NULL && _write_lock ()) { Object *obj = _get_object (PATTERN, source); @@ -2098,6 +2166,7 @@ cairo_set_source (cairo_t *cr, cairo_pattern_t *source) } DLCALL (cairo_set_source, cr, source); + _exit_trace (); } cairo_pattern_t * @@ -2105,7 +2174,7 @@ cairo_get_source (cairo_t *cr) { cairo_pattern_t *ret; - ENSURE_INIT_TRACE (); + _enter_trace (); ret = DLCALL (cairo_get_source, cr); @@ -2115,16 +2184,18 @@ cairo_get_source (cairo_t *cr) _get_object (PATTERN, ret)->defined = true; } + _exit_trace (); return ret; } void cairo_set_tolerance (cairo_t *cr, double tolerance) { - ENSURE_INIT_TRACE (); + _enter_trace (); _emit_line_info (); _emit_cairo_op (cr, "%g set-tolerance\n", tolerance); DLCALL (cairo_set_tolerance, cr, tolerance); + _exit_trace (); } static const char * @@ -2144,11 +2215,12 @@ _antialias_to_string (cairo_antialias_t antialias) void cairo_set_antialias (cairo_t *cr, cairo_antialias_t antialias) { - ENSURE_INIT_TRACE (); + _enter_trace (); _emit_line_info (); _emit_cairo_op (cr, "//%s set-antialias\n", _antialias_to_string (antialias)); DLCALL (cairo_set_antialias, cr, antialias); + _exit_trace (); } static const char * @@ -2166,20 +2238,22 @@ _fill_rule_to_string (cairo_fill_rule_t rule) void cairo_set_fill_rule (cairo_t *cr, cairo_fill_rule_t fill_rule) { - ENSURE_INIT_TRACE (); + _enter_trace (); _emit_line_info (); _emit_cairo_op (cr, "//%s set-fill-rule\n", _fill_rule_to_string (fill_rule)); DLCALL (cairo_set_fill_rule, cr, fill_rule); + _exit_trace (); } void cairo_set_line_width (cairo_t *cr, double width) { - ENSURE_INIT_TRACE (); + _enter_trace (); _emit_line_info (); _emit_cairo_op (cr, "%g set-line-width\n", width); DLCALL (cairo_set_line_width, cr, width); + _exit_trace (); } static const char * @@ -2198,10 +2272,11 @@ _line_cap_to_string (cairo_line_cap_t line_cap) void cairo_set_line_cap (cairo_t *cr, cairo_line_cap_t line_cap) { - ENSURE_INIT_TRACE (); + _enter_trace (); _emit_line_info (); _emit_cairo_op (cr, "//%s set-line-cap\n", _line_cap_to_string (line_cap)); DLCALL (cairo_set_line_cap, cr, line_cap); + _exit_trace (); } static const char * @@ -2220,17 +2295,18 @@ _line_join_to_string (cairo_line_join_t line_join) void cairo_set_line_join (cairo_t *cr, cairo_line_join_t line_join) { - ENSURE_INIT_TRACE (); + _enter_trace (); _emit_line_info (); _emit_cairo_op (cr, "//%s set-line-join\n", _line_join_to_string (line_join)); DLCALL (cairo_set_line_join, cr, line_join); + _exit_trace (); } void cairo_set_dash (cairo_t *cr, const double *dashes, int num_dashes, double offset) { - ENSURE_INIT_TRACE (); + _enter_trace (); _emit_line_info (); if (cr != NULL && _write_lock ()) { int n; @@ -2249,60 +2325,66 @@ cairo_set_dash (cairo_t *cr, const double *dashes, int num_dashes, double offset } DLCALL (cairo_set_dash, cr, dashes, num_dashes, offset); + _exit_trace (); } void cairo_set_miter_limit (cairo_t *cr, double limit) { - ENSURE_INIT_TRACE (); + _enter_trace (); _emit_line_info (); _emit_cairo_op (cr, "%g set-miter-limit\n", limit); DLCALL (cairo_set_miter_limit, cr, limit); + _exit_trace (); } void cairo_translate (cairo_t *cr, double tx, double ty) { - ENSURE_INIT_TRACE (); + _enter_trace (); _emit_line_info (); _emit_cairo_op (cr, "%g %g translate\n", tx, ty); DLCALL (cairo_translate, cr, tx, ty); + _exit_trace (); } void cairo_scale (cairo_t *cr, double sx, double sy) { - ENSURE_INIT_TRACE (); + _enter_trace (); _emit_line_info (); _emit_cairo_op (cr, "%g %g scale\n", sx, sy); DLCALL (cairo_scale, cr, sx, sy); + _exit_trace (); } void cairo_rotate (cairo_t *cr, double angle) { - ENSURE_INIT_TRACE (); + _enter_trace (); _emit_line_info (); _emit_cairo_op (cr, "%g rotate\n", angle); DLCALL (cairo_rotate, cr, angle); + _exit_trace (); } void cairo_transform (cairo_t *cr, const cairo_matrix_t *matrix) { - ENSURE_INIT_TRACE (); + _enter_trace (); _emit_line_info (); _emit_cairo_op (cr, "%g %g %g %g %g %g matrix transform\n", matrix->xx, matrix->yx, matrix->xy, matrix->yy, matrix->x0, matrix->y0); DLCALL (cairo_transform, cr, matrix); + _exit_trace (); } void cairo_set_matrix (cairo_t *cr, const cairo_matrix_t *matrix) { - ENSURE_INIT_TRACE (); + _enter_trace (); _emit_line_info (); if (_matrix_is_identity (matrix)) { _emit_cairo_op (cr, "identity set-matrix\n"); @@ -2313,6 +2395,7 @@ cairo_set_matrix (cairo_t *cr, const cairo_matrix_t *matrix) matrix->x0, matrix->y0); } DLCALL (cairo_set_matrix, cr, matrix); + _exit_trace (); } cairo_surface_t * @@ -2321,7 +2404,7 @@ cairo_get_target (cairo_t *cr) cairo_surface_t *ret; long surface_id; - ENSURE_INIT_TRACE (); + _enter_trace (); ret = DLCALL (cairo_get_target, cr); surface_id = _create_surface_id (ret); @@ -2331,6 +2414,7 @@ cairo_get_target (cairo_t *cr) _get_object (SURFACE, ret)->defined = true; } + _exit_trace (); return ret; } @@ -2340,7 +2424,7 @@ cairo_get_group_target (cairo_t *cr) cairo_surface_t *ret; long surface_id; - ENSURE_INIT_TRACE (); + _enter_trace (); ret = DLCALL (cairo_get_group_target, cr); surface_id = _create_surface_id (ret); @@ -2350,139 +2434,155 @@ cairo_get_group_target (cairo_t *cr) _get_object (SURFACE, ret)->defined = true; } + _exit_trace (); return ret; } void cairo_identity_matrix (cairo_t *cr) { - ENSURE_INIT_TRACE (); + _enter_trace (); _emit_line_info (); _emit_cairo_op (cr, "identity set-matrix\n"); DLCALL (cairo_identity_matrix, cr); + _exit_trace (); } void cairo_new_path (cairo_t *cr) { - ENSURE_INIT_TRACE (); + _enter_trace (); _emit_line_info (); _emit_cairo_op (cr, "n "); DLCALL (cairo_new_path, cr); + _exit_trace (); } void cairo_move_to (cairo_t *cr, double x, double y) { - ENSURE_INIT_TRACE (); + _enter_trace (); _emit_cairo_op (cr, "%g %g m ", x, y); DLCALL (cairo_move_to, cr, x, y); + _exit_trace (); } void cairo_new_sub_path (cairo_t *cr) { - ENSURE_INIT_TRACE (); + _enter_trace (); _emit_cairo_op (cr, "N "); DLCALL (cairo_new_sub_path, cr); + _exit_trace (); } void cairo_line_to (cairo_t *cr, double x, double y) { - ENSURE_INIT_TRACE (); + _enter_trace (); _emit_cairo_op (cr, "%g %g l ", x, y); DLCALL (cairo_line_to, cr, x, y); + _exit_trace (); } void cairo_curve_to (cairo_t *cr, double x1, double y1, double x2, double y2, double x3, double y3) { - ENSURE_INIT_TRACE (); + _enter_trace (); _emit_cairo_op (cr, "%g %g %g %g %g %g c ", x1, y1, x2, y2, x3, y3); DLCALL (cairo_curve_to, cr, x1, y1, x2, y2, x3, y3); + _exit_trace (); } void cairo_arc (cairo_t *cr, double xc, double yc, double radius, double angle1, double angle2) { - ENSURE_INIT_TRACE (); + _enter_trace (); _emit_cairo_op (cr, "%g %g %g %g %g arc\n", xc, yc, radius, angle1, angle2); DLCALL (cairo_arc, cr, xc, yc, radius, angle1, angle2); + _exit_trace (); } void cairo_arc_negative (cairo_t *cr, double xc, double yc, double radius, double angle1, double angle2) { - ENSURE_INIT_TRACE (); + _enter_trace (); _emit_cairo_op (cr, "%g %g %g %g %g arc-\n", xc, yc, radius, angle1, angle2); DLCALL (cairo_arc_negative, cr, xc, yc, radius, angle1, angle2); + _exit_trace (); } void cairo_rel_move_to (cairo_t *cr, double dx, double dy) { - ENSURE_INIT_TRACE (); + _enter_trace (); _emit_cairo_op (cr, "%g %g M ", dx, dy); DLCALL (cairo_rel_move_to, cr, dx, dy); + _exit_trace (); } void cairo_rel_line_to (cairo_t *cr, double dx, double dy) { - ENSURE_INIT_TRACE (); + _enter_trace (); _emit_cairo_op (cr, "%g %g L ", dx, dy); DLCALL (cairo_rel_line_to, cr, dx, dy); + _exit_trace (); } void cairo_rel_curve_to (cairo_t *cr, double dx1, double dy1, double dx2, double dy2, double dx3, double dy3) { - ENSURE_INIT_TRACE (); + _enter_trace (); _emit_cairo_op (cr, "%g %g %g %g %g %g C ", dx1, dy1, dx2, dy2, dx3, dy3); DLCALL (cairo_rel_curve_to, cr, dx1, dy1, dx2, dy2, dx3, dy3); + _exit_trace (); } void cairo_rectangle (cairo_t *cr, double x, double y, double width, double height) { - ENSURE_INIT_TRACE (); + _enter_trace (); _emit_cairo_op (cr, "%g %g %g %g rectangle\n", x, y, width, height); DLCALL (cairo_rectangle, cr, x, y, width, height); + _exit_trace (); } void cairo_close_path (cairo_t *cr) { - ENSURE_INIT_TRACE (); + _enter_trace (); _emit_cairo_op (cr, "h\n"); DLCALL (cairo_close_path, cr); + _exit_trace (); } void cairo_paint (cairo_t *cr) { - ENSURE_INIT_TRACE (); + _enter_trace (); _emit_line_info (); _emit_cairo_op (cr, "paint\n"); DLCALL (cairo_paint, cr); + _exit_trace (); } void cairo_paint_with_alpha (cairo_t *cr, double alpha) { - ENSURE_INIT_TRACE (); + _enter_trace (); _emit_line_info (); _emit_cairo_op (cr, "%g paint-with-alpha\n", alpha); DLCALL (cairo_paint_with_alpha, cr, alpha); + _exit_trace (); } void cairo_mask (cairo_t *cr, cairo_pattern_t *pattern) { - ENSURE_INIT_TRACE (); + _enter_trace (); _emit_line_info (); if (cr != NULL && pattern != NULL && _write_lock ()) { Object *obj = _get_object (PATTERN, pattern); @@ -2516,12 +2616,13 @@ cairo_mask (cairo_t *cr, cairo_pattern_t *pattern) _write_unlock (); } DLCALL (cairo_mask, cr, pattern); + _exit_trace (); } void cairo_mask_surface (cairo_t *cr, cairo_surface_t *surface, double x, double y) { - ENSURE_INIT_TRACE (); + _enter_trace (); _emit_line_info (); if (cr != NULL && surface != NULL && _write_lock ()) { if (_is_current (SURFACE, surface, 0) && @@ -2549,87 +2650,97 @@ cairo_mask_surface (cairo_t *cr, cairo_surface_t *surface, double x, double y) } DLCALL (cairo_mask_surface, cr, surface, x, y); + _exit_trace (); } void cairo_stroke (cairo_t *cr) { - ENSURE_INIT_TRACE (); + _enter_trace (); _emit_line_info (); _emit_cairo_op (cr, "stroke\n"); DLCALL (cairo_stroke, cr); + _exit_trace (); } void cairo_stroke_preserve (cairo_t *cr) { - ENSURE_INIT_TRACE (); + _enter_trace (); _emit_line_info (); _emit_cairo_op (cr, "stroke+\n"); DLCALL (cairo_stroke_preserve, cr); + _exit_trace (); } void cairo_fill (cairo_t *cr) { - ENSURE_INIT_TRACE (); + _enter_trace (); _emit_line_info (); _emit_cairo_op (cr, "fill\n"); DLCALL (cairo_fill, cr); + _exit_trace (); } void cairo_fill_preserve (cairo_t *cr) { - ENSURE_INIT_TRACE (); + _enter_trace (); _emit_line_info (); _emit_cairo_op (cr, "fill+\n"); DLCALL (cairo_fill_preserve, cr); + _exit_trace (); } void cairo_copy_page (cairo_t *cr) { - ENSURE_INIT_TRACE (); + _enter_trace (); _emit_line_info (); _emit_cairo_op (cr, "copy-page\n"); DLCALL (cairo_copy_page, cr); + _exit_trace (); } void cairo_show_page (cairo_t *cr) { - ENSURE_INIT_TRACE (); + _enter_trace (); _emit_line_info (); _emit_cairo_op (cr, "show-page\n"); DLCALL (cairo_show_page, cr); + _exit_trace (); } void cairo_clip (cairo_t *cr) { - ENSURE_INIT_TRACE (); + _enter_trace (); _emit_line_info (); _emit_cairo_op (cr, "clip\n"); DLCALL (cairo_clip, cr); + _exit_trace (); } void cairo_clip_preserve (cairo_t *cr) { - ENSURE_INIT_TRACE (); + _enter_trace (); _emit_line_info (); _emit_cairo_op (cr, "clip+\n"); DLCALL (cairo_clip_preserve, cr); + _exit_trace (); } void cairo_reset_clip (cairo_t *cr) { - ENSURE_INIT_TRACE (); + _enter_trace (); _emit_line_info (); _emit_cairo_op (cr, "reset-clip\n"); DLCALL (cairo_reset_clip, cr); + _exit_trace (); } @@ -2661,7 +2772,7 @@ _weight_to_string (cairo_font_weight_t font_weight) void cairo_select_font_face (cairo_t *cr, const char *family, cairo_font_slant_t slant, cairo_font_weight_t weight) { - ENSURE_INIT_TRACE (); + _enter_trace (); _emit_line_info (); if (cr != NULL && _write_lock ()) { _emit_context (cr); @@ -2672,6 +2783,7 @@ cairo_select_font_face (cairo_t *cr, const char *family, cairo_font_slant_t slan _write_unlock (); } DLCALL (cairo_select_font_face, cr, family, slant, weight); + _exit_trace (); } cairo_font_face_t * @@ -2680,7 +2792,7 @@ cairo_get_font_face (cairo_t *cr) cairo_font_face_t *ret; long font_face_id; - ENSURE_INIT_TRACE (); + _enter_trace (); ret = DLCALL (cairo_get_font_face, cr); font_face_id = _create_font_face_id (ret); @@ -2688,13 +2800,14 @@ cairo_get_font_face (cairo_t *cr) _emit_cairo_op (cr, "/font-face get %% f%ld\n", font_face_id); _push_operand (FONT_FACE, ret); + _exit_trace (); return ret; } void cairo_set_font_face (cairo_t *cr, cairo_font_face_t *font_face) { - ENSURE_INIT_TRACE (); + _enter_trace (); _emit_line_info (); if (cr != NULL && font_face != NULL && _write_lock ()) { if (_is_current (FONT_FACE, font_face, 0) && @@ -2720,27 +2833,30 @@ cairo_set_font_face (cairo_t *cr, cairo_font_face_t *font_face) } DLCALL (cairo_set_font_face, cr, font_face); + _exit_trace (); } void cairo_set_font_size (cairo_t *cr, double size) { - ENSURE_INIT_TRACE (); + _enter_trace (); _emit_line_info (); _emit_cairo_op (cr, "%g set-font-size\n", size); DLCALL (cairo_set_font_size, cr, size); + _exit_trace (); } void cairo_set_font_matrix (cairo_t *cr, const cairo_matrix_t *matrix) { - ENSURE_INIT_TRACE (); + _enter_trace (); _emit_line_info (); _emit_cairo_op (cr, "%g %g %g %g %g %g matrix set-font-matrix\n", matrix->xx, matrix->yx, matrix->xy, matrix->yy, matrix->x0, matrix->y0); DLCALL (cairo_set_font_matrix, cr, matrix); + _exit_trace (); } static const char * @@ -2794,8 +2910,6 @@ _emit_font_options (const cairo_font_options_t *options) cairo_hint_style_t hint_style; cairo_hint_metrics_t hint_metrics; - ENSURE_INIT_TRACE (); - _trace_printf ("<<"); antialias = DLCALL (cairo_font_options_get_antialias, options); @@ -2828,7 +2942,7 @@ _emit_font_options (const cairo_font_options_t *options) void cairo_set_font_options (cairo_t *cr, const cairo_font_options_t *options) { - ENSURE_INIT_TRACE (); + _enter_trace (); _emit_line_info (); if (cr != NULL && options != NULL && _write_lock ()) { _emit_context (cr); @@ -2838,6 +2952,7 @@ cairo_set_font_options (cairo_t *cr, const cairo_font_options_t *options) } DLCALL (cairo_set_font_options, cr, options); + _exit_trace (); } cairo_scaled_font_t * @@ -2845,7 +2960,7 @@ cairo_get_scaled_font (cairo_t *cr) { cairo_scaled_font_t *ret; - ENSURE_INIT_TRACE (); + _enter_trace (); ret = DLCALL (cairo_get_scaled_font, cr); @@ -2855,13 +2970,14 @@ cairo_get_scaled_font (cairo_t *cr) _get_object (SCALED_FONT, ret)->defined = true; } + _exit_trace (); return ret; } void cairo_set_scaled_font (cairo_t *cr, const cairo_scaled_font_t *scaled_font) { - ENSURE_INIT_TRACE (); + _enter_trace (); _emit_line_info (); if (cr != NULL && scaled_font != NULL) { if (_pop_operands_to (SCALED_FONT, scaled_font)) { @@ -2890,6 +3006,7 @@ cairo_set_scaled_font (cairo_t *cr, const cairo_scaled_font_t *scaled_font) } } DLCALL (cairo_set_scaled_font, cr, scaled_font); + _exit_trace (); } static void @@ -2917,7 +3034,7 @@ cairo_scaled_font_create (cairo_font_face_t *font_face, cairo_scaled_font_t *ret; long scaled_font_id; - ENSURE_INIT_TRACE (); + _enter_trace (); ret = DLCALL (cairo_scaled_font_create, font_face, font_matrix, ctm, options); scaled_font_id = _create_scaled_font_id (ret); @@ -2956,13 +3073,14 @@ cairo_scaled_font_create (cairo_font_face_t *font_face, _write_unlock (); } + _exit_trace (); return ret; } void cairo_show_text (cairo_t *cr, const char *utf8) { - ENSURE_INIT_TRACE (); + _enter_trace (); _emit_line_info (); if (cr != NULL && _write_lock ()) { _emit_context (cr); @@ -2971,6 +3089,7 @@ cairo_show_text (cairo_t *cr, const char *utf8) _write_unlock (); } DLCALL (cairo_show_text, cr, utf8); + _exit_trace (); } static void @@ -3066,7 +3185,7 @@ _emit_glyphs (cairo_scaled_font_t *font, void cairo_show_glyphs (cairo_t *cr, const cairo_glyph_t *glyphs, int num_glyphs) { - ENSURE_INIT_TRACE (); + _enter_trace (); _emit_line_info (); if (cr != NULL && glyphs != NULL && _write_lock ()) { cairo_scaled_font_t *font; @@ -3080,6 +3199,7 @@ cairo_show_glyphs (cairo_t *cr, const cairo_glyph_t *glyphs, int num_glyphs) } DLCALL (cairo_show_glyphs, cr, glyphs, num_glyphs); + _exit_trace (); } static const char * @@ -3104,7 +3224,7 @@ cairo_show_text_glyphs (cairo_t *cr, { cairo_scaled_font_t *font; - ENSURE_INIT_TRACE (); + _enter_trace (); font = DLCALL (cairo_get_scaled_font, cr); @@ -3134,12 +3254,13 @@ cairo_show_text_glyphs (cairo_t *cr, glyphs, num_glyphs, clusters, num_clusters, backward); + _exit_trace (); } void cairo_text_path (cairo_t *cr, const char *utf8) { - ENSURE_INIT_TRACE (); + _enter_trace (); _emit_line_info (); if (cr != NULL && _write_lock ()) { _emit_context (cr); @@ -3148,6 +3269,7 @@ cairo_text_path (cairo_t *cr, const char *utf8) _write_unlock (); } DLCALL (cairo_text_path, cr, utf8); + _exit_trace (); } void @@ -3155,7 +3277,7 @@ cairo_glyph_path (cairo_t *cr, const cairo_glyph_t *glyphs, int num_glyphs) { cairo_scaled_font_t *font; - ENSURE_INIT_TRACE (); + _enter_trace (); font = DLCALL (cairo_get_scaled_font, cr); @@ -3169,6 +3291,7 @@ cairo_glyph_path (cairo_t *cr, const cairo_glyph_t *glyphs, int num_glyphs) } DLCALL (cairo_glyph_path, cr, glyphs, num_glyphs); + _exit_trace (); } void @@ -3178,11 +3301,12 @@ cairo_append_path (cairo_t *cr, const cairo_path_t *path) int i; cairo_path_data_t *p; - ENSURE_INIT_TRACE (); + _enter_trace (); _emit_line_info (); if (cr == NULL || path == NULL) { DLCALL (cairo_append_path, cr, path); + _exit_trace (); return; } @@ -3212,6 +3336,7 @@ cairo_append_path (cairo_t *cr, const cairo_path_t *path) break; } } + _exit_trace (); } cairo_surface_t * @@ -3221,7 +3346,7 @@ cairo_image_surface_create (cairo_format_t format, int width, int height) long surface_id; const char *format_str; - ENSURE_INIT_TRACE (); + _enter_trace (); ret = DLCALL (cairo_image_surface_create, format, width, height); @@ -3243,6 +3368,7 @@ cairo_image_surface_create (cairo_format_t format, int width, int height) _write_unlock (); } + _exit_trace (); return ret; } @@ -3252,7 +3378,7 @@ cairo_image_surface_create_for_data (unsigned char *data, cairo_format_t format, cairo_surface_t *ret; long surface_id; - ENSURE_INIT_TRACE (); + _enter_trace (); ret = DLCALL (cairo_image_surface_create_for_data, data, format, width, height, stride); surface_id = _create_surface_id (ret); @@ -3292,6 +3418,7 @@ cairo_image_surface_create_for_data (unsigned char *data, cairo_format_t format, _write_unlock (); } + _exit_trace (); return ret; } @@ -3303,7 +3430,7 @@ cairo_surface_create_similar (cairo_surface_t *other, cairo_surface_t *ret; long surface_id; - ENSURE_INIT_TRACE (); + _enter_trace (); ret = DLCALL (cairo_surface_create_similar, other, content, width, height); surface_id = _create_surface_id (ret); @@ -3329,6 +3456,7 @@ cairo_surface_create_similar (cairo_surface_t *other, _write_unlock (); } + _exit_trace (); return ret; } @@ -3352,23 +3480,25 @@ _emit_surface_op (cairo_surface_t *surface, const char *fmt, ...) void cairo_surface_finish (cairo_surface_t *surface) { - ENSURE_INIT_TRACE (); + _enter_trace (); _emit_line_info (); DLCALL (cairo_surface_finish, surface); + _exit_trace (); } void cairo_surface_flush (cairo_surface_t *surface) { - ENSURE_INIT_TRACE (); + _enter_trace (); _emit_line_info (); DLCALL (cairo_surface_flush, surface); + _exit_trace (); } void cairo_surface_mark_dirty (cairo_surface_t *surface) { - ENSURE_INIT_TRACE (); + _enter_trace (); _emit_line_info (); if (surface != NULL && _write_lock ()) { if (_mark_dirty) { @@ -3381,13 +3511,14 @@ cairo_surface_mark_dirty (cairo_surface_t *surface) } DLCALL (cairo_surface_mark_dirty, surface); + _exit_trace (); } void cairo_surface_mark_dirty_rectangle (cairo_surface_t *surface, int x, int y, int width, int height) { - ENSURE_INIT_TRACE (); + _enter_trace (); _emit_line_info (); if (surface != NULL && _write_lock ()) { if (_mark_dirty) { @@ -3402,44 +3533,49 @@ cairo_surface_mark_dirty_rectangle (cairo_surface_t *surface, } DLCALL (cairo_surface_mark_dirty_rectangle, surface, x, y, width, height); + _exit_trace (); } void cairo_surface_set_device_offset (cairo_surface_t *surface, double x_offset, double y_offset) { - ENSURE_INIT_TRACE (); + _enter_trace (); _emit_line_info (); _emit_surface_op (surface, "%g %g set-device-offset\n", x_offset, y_offset); DLCALL (cairo_surface_set_device_offset, surface, x_offset, y_offset); + _exit_trace (); } void cairo_surface_set_fallback_resolution (cairo_surface_t *surface, double x_pixels_per_inch, double y_pixels_per_inch) { - ENSURE_INIT_TRACE (); + _enter_trace (); _emit_line_info (); _emit_surface_op (surface, "%g %g set-fallback-resolution\n", x_pixels_per_inch, y_pixels_per_inch); DLCALL (cairo_surface_set_fallback_resolution, surface, x_pixels_per_inch, y_pixels_per_inch); + _exit_trace (); } void cairo_surface_copy_page (cairo_surface_t *surface) { - ENSURE_INIT_TRACE (); + _enter_trace (); _emit_line_info (); _emit_surface_op (surface, "copy-page\n"); DLCALL (cairo_surface_copy_page, surface); + _exit_trace (); } void cairo_surface_show_page (cairo_surface_t *surface) { - ENSURE_INIT_TRACE (); + _enter_trace (); _emit_line_info (); _emit_surface_op (surface, "show-page\n"); DLCALL (cairo_surface_show_page, surface); + _exit_trace (); } cairo_status_t @@ -3450,7 +3586,8 @@ cairo_surface_set_mime_data (cairo_surface_t *surface, cairo_destroy_func_t destroy, void *closure) { - ENSURE_INIT_TRACE (); + cairo_status_t ret; + _enter_trace (); _emit_line_info (); if (surface != NULL && _write_lock ()) { _emit_surface (surface); @@ -3462,19 +3599,22 @@ cairo_surface_set_mime_data (cairo_surface_t *surface, _write_unlock (); } - return DLCALL (cairo_surface_set_mime_data, - surface, - mime_type, - data, length, - destroy, - closure); + ret = DLCALL (cairo_surface_set_mime_data, + surface, + mime_type, + data, length, + destroy, + closure); + _exit_trace (); + return ret; } #if CAIRO_HAS_PNG_FUNCTIONS cairo_status_t cairo_surface_write_to_png (cairo_surface_t *surface, const char *filename) { - ENSURE_INIT_TRACE (); + cairo_status_t ret; + _enter_trace (); _emit_line_info (); if (surface != NULL && _write_lock ()) { _trace_printf ("%% s%ld ", _get_surface_id (surface)); @@ -3482,7 +3622,9 @@ cairo_surface_write_to_png (cairo_surface_t *surface, const char *filename) _trace_printf (" write-to-png\n"); _write_unlock (); } - return DLCALL (cairo_surface_write_to_png, surface, filename); + ret = DLCALL (cairo_surface_write_to_png, surface, filename); + _exit_trace (); + return ret; } cairo_status_t @@ -3490,7 +3632,8 @@ cairo_surface_write_to_png_stream (cairo_surface_t *surface, cairo_write_func_t write_func, void *data) { - ENSURE_INIT_TRACE (); + cairo_status_t ret; + _enter_trace (); _emit_line_info (); if (surface != NULL && _write_lock ()) { char symbol[1024]; @@ -3504,8 +3647,10 @@ cairo_surface_write_to_png_stream (cairo_surface_t *surface, _trace_printf (" write-to-png-stream\n"); _write_unlock (); } - return DLCALL (cairo_surface_write_to_png_stream, - surface, write_func, data); + ret = DLCALL (cairo_surface_write_to_png_stream, + surface, write_func, data); + _exit_trace (); + return ret; } #endif @@ -3532,7 +3677,7 @@ cairo_pattern_create_rgb (double red, double green, double blue) cairo_pattern_t *ret; long pattern_id; - ENSURE_INIT_TRACE (); + _enter_trace (); ret = DLCALL (cairo_pattern_create_rgb, red, green, blue); pattern_id = _create_pattern_id (ret); @@ -3545,6 +3690,7 @@ cairo_pattern_create_rgb (double red, double green, double blue) _write_unlock (); } + _exit_trace (); return ret; } @@ -3554,7 +3700,7 @@ cairo_pattern_create_rgba (double red, double green, double blue, double alpha) cairo_pattern_t *ret; long pattern_id; - ENSURE_INIT_TRACE (); + _enter_trace (); ret = DLCALL (cairo_pattern_create_rgba, red, green, blue, alpha); pattern_id = _create_pattern_id (ret); @@ -3567,6 +3713,7 @@ cairo_pattern_create_rgba (double red, double green, double blue, double alpha) _write_unlock (); } + _exit_trace (); return ret; } @@ -3577,7 +3724,7 @@ cairo_pattern_create_for_surface (cairo_surface_t *surface) long pattern_id; long surface_id; - ENSURE_INIT_TRACE (); + _enter_trace (); ret = DLCALL (cairo_pattern_create_for_surface, surface); pattern_id = _create_pattern_id (ret); @@ -3600,6 +3747,7 @@ cairo_pattern_create_for_surface (cairo_surface_t *surface) _write_unlock (); } + _exit_trace (); return ret; } @@ -3609,7 +3757,7 @@ cairo_pattern_create_linear (double x0, double y0, double x1, double y1) cairo_pattern_t *ret; long pattern_id; - ENSURE_INIT_TRACE (); + _enter_trace (); ret = DLCALL (cairo_pattern_create_linear, x0, y0, x1, y1); pattern_id = _create_pattern_id (ret); @@ -3622,6 +3770,7 @@ cairo_pattern_create_linear (double x0, double y0, double x1, double y1) _write_unlock (); } + _exit_trace (); return ret; } @@ -3631,7 +3780,7 @@ cairo_pattern_create_radial (double cx0, double cy0, double radius0, double cx1, cairo_pattern_t *ret; long pattern_id; - ENSURE_INIT_TRACE (); + _enter_trace (); ret = DLCALL (cairo_pattern_create_radial, cx0, cy0, radius0, @@ -3647,35 +3796,38 @@ cairo_pattern_create_radial (double cx0, double cy0, double radius0, double cx1, _write_unlock (); } + _exit_trace (); return ret; } void cairo_pattern_add_color_stop_rgb (cairo_pattern_t *pattern, double offset, double red, double green, double blue) { - ENSURE_INIT_TRACE (); + _enter_trace (); _emit_line_info (); _emit_pattern_op (pattern, "%g %g %g %g 1 add-color-stop\n", offset, red, green, blue); DLCALL (cairo_pattern_add_color_stop_rgb, pattern, offset, red, green, blue); + _exit_trace (); } void cairo_pattern_add_color_stop_rgba (cairo_pattern_t *pattern, double offset, double red, double green, double blue, double alpha) { - ENSURE_INIT_TRACE (); + _enter_trace (); _emit_line_info (); _emit_pattern_op (pattern, "%g %g %g %g %g add-color-stop\n", offset, red, green, blue, alpha); DLCALL (cairo_pattern_add_color_stop_rgba, pattern, offset, red, green, blue, alpha); + _exit_trace (); } void cairo_pattern_set_matrix (cairo_pattern_t *pattern, const cairo_matrix_t *matrix) { - ENSURE_INIT_TRACE (); + _enter_trace (); _emit_line_info (); if (_matrix_is_identity (matrix)) { _emit_pattern_op (pattern, "identity set-matrix\n"); @@ -3687,6 +3839,7 @@ cairo_pattern_set_matrix (cairo_pattern_t *pattern, const cairo_matrix_t *matrix matrix->x0, matrix->y0); } DLCALL (cairo_pattern_set_matrix, pattern, matrix); + _exit_trace (); } static const char * @@ -3708,10 +3861,11 @@ _filter_to_string (cairo_filter_t filter) void cairo_pattern_set_filter (cairo_pattern_t *pattern, cairo_filter_t filter) { - ENSURE_INIT_TRACE (); + _enter_trace (); _emit_line_info (); _emit_pattern_op (pattern, "//%s set-filter\n", _filter_to_string (filter)); DLCALL (cairo_pattern_set_filter, pattern, filter); + _exit_trace (); } static const char * @@ -3731,10 +3885,11 @@ _extend_to_string (cairo_extend_t extend) void cairo_pattern_set_extend (cairo_pattern_t *pattern, cairo_extend_t extend) { - ENSURE_INIT_TRACE (); + _enter_trace (); _emit_line_info (); _emit_pattern_op (pattern, "//%s set-extend\n", _extend_to_string (extend)); DLCALL (cairo_pattern_set_extend, pattern, extend); + _exit_trace (); } #if CAIRO_HAS_FT_FONT @@ -3745,7 +3900,7 @@ cairo_ft_font_face_create_for_pattern (FcPattern *pattern) cairo_font_face_t *ret; long font_face_id; - ENSURE_INIT_TRACE (); + _enter_trace (); ret = DLCALL (cairo_ft_font_face_create_for_pattern, pattern); font_face_id = _create_font_face_id (ret); @@ -3773,6 +3928,7 @@ cairo_ft_font_face_create_for_pattern (FcPattern *pattern) free (parsed); } + _exit_trace (); return ret; } #endif /* CAIRO_HAS_FC_FONT*/ @@ -3799,18 +3955,22 @@ cairo_ft_font_face_create_for_ft_face (FT_Face face, int load_flags) FtFaceData *data; long font_face_id; - ENSURE_INIT_TRACE (); + _enter_trace (); ret = DLCALL (cairo_ft_font_face_create_for_ft_face, face, load_flags); font_face_id = _create_font_face_id (ret); - if (face == NULL) + if (face == NULL) { + _exit_trace (); return ret; + } obj = _get_object (NONE, face); data = obj->data; - if (data == NULL) + if (data == NULL) { + _exit_trace (); return ret; + } _emit_line_info (); if (_write_lock ()) { @@ -3826,6 +3986,7 @@ cairo_ft_font_face_create_for_ft_face (FT_Face face, int load_flags) _write_unlock (); } + _exit_trace (); return ret; } @@ -3865,7 +4026,7 @@ FT_New_Face (FT_Library library, const char *pathname, FT_Long index, FT_Face *f { FT_Error ret; - ENSURE_INIT_TRACE (); + _enter_trace (); ret = DLCALL (FT_New_Face, library, pathname, index, face); if (ret == 0) { @@ -3879,6 +4040,7 @@ FT_New_Face (FT_Library library, const char *pathname, FT_Long index, FT_Face *f obj->destroy = _ft_face_data_destroy; } + _exit_trace (); return ret; } @@ -3887,7 +4049,7 @@ FT_New_Memory_Face (FT_Library library, const FT_Byte *mem, FT_Long size, FT_Lon { FT_Error ret; - ENSURE_INIT_TRACE (); + _enter_trace (); ret = DLCALL (FT_New_Memory_Face, library, mem, size, index, face); if (ret == 0) { @@ -3901,6 +4063,7 @@ FT_New_Memory_Face (FT_Library library, const FT_Byte *mem, FT_Long size, FT_Lon obj->destroy = _ft_face_data_destroy; } + _exit_trace (); return ret; } @@ -3917,7 +4080,7 @@ FT_Open_Face (FT_Library library, const FT_Open_Args *args, FT_Long index, FT_Fa { FT_Error ret; - ENSURE_INIT_TRACE (); + _enter_trace (); ret = DLCALL (FT_Open_Face, library, args, index, face); if (args->flags & FT_OPEN_MEMORY) @@ -3931,6 +4094,7 @@ FT_Open_Face (FT_Library library, const FT_Open_Args *args, FT_Long index, FT_Fa fprintf (stderr, "FT_Open_Face (path=%s, %ld) = %p\n", args->pathname, index, *face); + _exit_trace (); return ret; } #endif @@ -3938,11 +4102,14 @@ FT_Open_Face (FT_Library library, const FT_Open_Args *args, FT_Long index, FT_Fa FT_Error FT_Done_Face (FT_Face face) { - ENSURE_INIT_TRACE (); + FT_Error ret; + _enter_trace (); _object_destroy (_get_object (NONE, face)); - return DLCALL (FT_Done_Face, face); + ret = DLCALL (FT_Done_Face, face); + _exit_trace (); + return ret; } #endif @@ -3973,7 +4140,7 @@ cairo_ps_surface_create (const char *filename, double width_in_points, double he cairo_surface_t *ret; long surface_id; - ENSURE_INIT_TRACE (); + _enter_trace (); ret = DLCALL (cairo_ps_surface_create, filename, width_in_points, height_in_points); surface_id = _create_surface_id (ret); @@ -3996,6 +4163,7 @@ cairo_ps_surface_create (const char *filename, double width_in_points, double he _write_unlock (); } + _exit_trace (); return ret; } @@ -4005,7 +4173,7 @@ cairo_ps_surface_create_for_stream (cairo_write_func_t write_func, void *closure cairo_surface_t *ret; long surface_id; - ENSURE_INIT_TRACE (); + _enter_trace (); ret = DLCALL (cairo_ps_surface_create_for_stream, write_func, closure, width_in_points, height_in_points); surface_id = _create_surface_id (ret); @@ -4025,15 +4193,17 @@ cairo_ps_surface_create_for_stream (cairo_write_func_t write_func, void *closure _write_unlock (); } + _exit_trace (); return ret; } void cairo_ps_surface_set_size (cairo_surface_t *surface, double width_in_points, double height_in_points) { - ENSURE_INIT_TRACE (); + _enter_trace (); _emit_line_info (); DLCALL (cairo_ps_surface_set_size, surface, width_in_points, height_in_points); + _exit_trace (); } #endif @@ -4047,7 +4217,7 @@ cairo_pdf_surface_create (const char *filename, double width_in_points, double h cairo_surface_t *ret; long surface_id; - ENSURE_INIT_TRACE (); + _enter_trace (); ret = DLCALL (cairo_pdf_surface_create, filename, width_in_points, height_in_points); surface_id = _create_surface_id (ret); @@ -4070,6 +4240,7 @@ cairo_pdf_surface_create (const char *filename, double width_in_points, double h _write_unlock (); } + _exit_trace (); return ret; } @@ -4079,7 +4250,7 @@ cairo_pdf_surface_create_for_stream (cairo_write_func_t write_func, void *closur cairo_surface_t *ret; long surface_id; - ENSURE_INIT_TRACE (); + _enter_trace (); ret = DLCALL (cairo_pdf_surface_create_for_stream, write_func, closure, width_in_points, height_in_points); surface_id = _create_surface_id (ret); @@ -4098,15 +4269,17 @@ cairo_pdf_surface_create_for_stream (cairo_write_func_t write_func, void *closur _push_operand (SURFACE, ret); _write_unlock (); } + _exit_trace (); return ret; } void cairo_pdf_surface_set_size (cairo_surface_t *surface, double width_in_points, double height_in_points) { - ENSURE_INIT_TRACE (); + _enter_trace (); _emit_line_info (); DLCALL (cairo_pdf_surface_set_size, surface, width_in_points, height_in_points); + _exit_trace (); } #endif @@ -4119,7 +4292,7 @@ cairo_svg_surface_create (const char *filename, double width, double height) cairo_surface_t *ret; long surface_id; - ENSURE_INIT_TRACE (); + _enter_trace (); ret = DLCALL (cairo_svg_surface_create, filename, width, height); surface_id = _create_surface_id (ret); @@ -4142,6 +4315,7 @@ cairo_svg_surface_create (const char *filename, double width, double height) _write_unlock (); } + _exit_trace (); return ret; } @@ -4151,7 +4325,7 @@ cairo_svg_surface_create_for_stream (cairo_write_func_t write_func, void *closur cairo_surface_t *ret; long surface_id; - ENSURE_INIT_TRACE (); + _enter_trace (); ret = DLCALL (cairo_svg_surface_create_for_stream, write_func, closure, width, height); surface_id = _create_surface_id (ret); @@ -4171,6 +4345,7 @@ cairo_svg_surface_create_for_stream (cairo_write_func_t write_func, void *closur _write_unlock (); } + _exit_trace (); return ret; } @@ -4183,7 +4358,7 @@ cairo_image_surface_create_from_png (const char *filename) cairo_surface_t *ret; long surface_id; - ENSURE_INIT_TRACE (); + _enter_trace (); ret = DLCALL (cairo_image_surface_create_from_png, filename); @@ -4204,6 +4379,7 @@ cairo_image_surface_create_from_png (const char *filename) _write_unlock (); } + _exit_trace (); return ret; } @@ -4213,7 +4389,7 @@ cairo_image_surface_create_from_png_stream (cairo_read_func_t read_func, void *c cairo_surface_t *ret; long surface_id; - ENSURE_INIT_TRACE (); + _enter_trace (); ret = DLCALL (cairo_image_surface_create_from_png_stream, read_func, closure); surface_id = _create_surface_id (ret); @@ -4229,6 +4405,7 @@ cairo_image_surface_create_from_png_stream (cairo_read_func_t read_func, void *c _write_unlock (); } + _exit_trace (); return ret; } #endif @@ -4251,7 +4428,7 @@ cairo_xlib_surface_create (Display *dpy, cairo_surface_t *ret; long surface_id; - ENSURE_INIT_TRACE (); + _enter_trace (); ret = DLCALL (cairo_xlib_surface_create, dpy, drawable, visual, width, height); @@ -4278,6 +4455,7 @@ cairo_xlib_surface_create (Display *dpy, _write_unlock (); } + _exit_trace (); return ret; } @@ -4290,7 +4468,7 @@ cairo_xlib_surface_create_for_bitmap (Display *dpy, cairo_surface_t *ret; long surface_id; - ENSURE_INIT_TRACE (); + _enter_trace (); ret = DLCALL (cairo_xlib_surface_create_for_bitmap, dpy, bitmap, screen, width, height); @@ -4318,6 +4496,7 @@ cairo_xlib_surface_create_for_bitmap (Display *dpy, _write_unlock (); } + _exit_trace (); return ret; } @@ -4333,7 +4512,7 @@ cairo_xlib_surface_create_with_xrender_format (Display *dpy, cairo_surface_t *ret; long surface_id; - ENSURE_INIT_TRACE (); + _enter_trace (); ret = DLCALL (cairo_xlib_surface_create_with_xrender_format, dpy, drawable, screen, format, width, height); @@ -4362,6 +4541,7 @@ cairo_xlib_surface_create_with_xrender_format (Display *dpy, _write_unlock (); } + _exit_trace (); return ret; } #endif @@ -4378,7 +4558,7 @@ cairo_script_surface_create (cairo_script_context_t *ctx, cairo_surface_t *ret; long surface_id; - ENSURE_INIT_TRACE (); + _enter_trace (); ret = DLCALL (cairo_script_surface_create, ctx, content, width, height); surface_id = _create_surface_id (ret); @@ -4400,6 +4580,7 @@ cairo_script_surface_create (cairo_script_context_t *ctx, _write_unlock (); } + _exit_trace (); return ret; } @@ -4410,7 +4591,7 @@ cairo_script_surface_create_for_target (cairo_script_context_t *ctx, cairo_surface_t *ret; long surface_id; - ENSURE_INIT_TRACE (); + _enter_trace (); ret = DLCALL (cairo_script_surface_create_for_target, ctx, target); surface_id = _create_surface_id (ret); @@ -4426,6 +4607,7 @@ cairo_script_surface_create_for_target (cairo_script_context_t *ctx, _write_unlock (); } + _exit_trace (); return ret; } #endif @@ -4440,7 +4622,7 @@ _cairo_test_fallback_surface_create (cairo_content_t content, cairo_surface_t *ret; long surface_id; - ENSURE_INIT_TRACE (); + _enter_trace (); ret = DLCALL (_cairo_test_fallback_surface_create, content, width, height); surface_id = _create_surface_id (ret); @@ -4462,6 +4644,7 @@ _cairo_test_fallback_surface_create (cairo_content_t content, _write_unlock (); } + _exit_trace (); return ret; } @@ -4472,7 +4655,7 @@ _cairo_test_paginated_surface_create (cairo_surface_t *surface) cairo_surface_t *ret; long surface_id; - ENSURE_INIT_TRACE (); + _enter_trace (); ret = DLCALL (_cairo_test_paginated_surface_create, surface); surface_id = _create_surface_id (ret); @@ -4490,6 +4673,7 @@ _cairo_test_paginated_surface_create (cairo_surface_t *surface) _write_unlock (); } + _exit_trace (); return ret; } @@ -4501,7 +4685,7 @@ _cairo_test_null_surface_create (cairo_content_t content) cairo_surface_t *ret; long surface_id; - ENSURE_INIT_TRACE (); + _enter_trace (); ret = DLCALL (_cairo_test_null_surface_create, content); surface_id = _create_surface_id (ret); @@ -4519,6 +4703,7 @@ _cairo_test_null_surface_create (cairo_content_t content) _write_unlock (); } + _exit_trace (); return ret; } #endif @@ -4530,7 +4715,7 @@ cairo_meta_surface_create (cairo_content_t content, cairo_surface_t *ret; long surface_id; - ENSURE_INIT_TRACE (); + _enter_trace (); ret = DLCALL (cairo_meta_surface_create, content, extents); surface_id = _create_surface_id (ret); @@ -4561,6 +4746,7 @@ cairo_meta_surface_create (cairo_content_t content, _write_unlock (); } + _exit_trace (); return ret; } @@ -4569,7 +4755,7 @@ cairo_meta_surface_replay (cairo_surface_t *meta, cairo_surface_t *target) { cairo_status_t ret; - ENSURE_INIT_TRACE (); + _enter_trace (); ret = DLCALL (cairo_meta_surface_replay, meta, target); @@ -4582,6 +4768,7 @@ cairo_meta_surface_replay (cairo_surface_t *meta, cairo_surface_t *target) _consume_operand (); } + _exit_trace (); return ret; } @@ -4595,7 +4782,7 @@ cairo_vg_surface_create (cairo_vg_context_t *context, cairo_surface_t *ret; long surface_id; - ENSURE_INIT_TRACE (); + _enter_trace (); ret = DLCALL (cairo_vg_surface_create, context, content, width, height); surface_id = _create_surface_id (ret); @@ -4617,6 +4804,7 @@ cairo_vg_surface_create (cairo_vg_context_t *context, _write_unlock (); } + _exit_trace (); return ret; } @@ -4629,7 +4817,7 @@ cairo_vg_surface_create_for_image (cairo_vg_context_t *context, cairo_surface_t *ret; long surface_id; - ENSURE_INIT_TRACE (); + _enter_trace (); ret = DLCALL (cairo_vg_surface_create_for_image, context, image, format, width, height); @@ -4655,6 +4843,7 @@ cairo_vg_surface_create_for_image (cairo_vg_context_t *context, _write_unlock (); } + _exit_trace (); return ret; } #endif -- cgit v1.2.3