diff options
Diffstat (limited to 'src/cairo-device.c')
-rw-r--r-- | src/cairo-device.c | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/src/cairo-device.c b/src/cairo-device.c index b4d1f8422..d8586509c 100644 --- a/src/cairo-device.c +++ b/src/cairo-device.c @@ -37,6 +37,7 @@ #include "cairo-device-private.h" #include "cairo-error-private.h" #include "cairo-list-inline.h" +#include "cairo-ttrace.h" /** * SECTION:cairo-device @@ -170,6 +171,7 @@ void _cairo_device_init (cairo_device_t *device, const cairo_device_backend_t *backend) { + CAIRO_TRACE_BEGIN (__func__); CAIRO_REFERENCE_COUNT_INIT (&device->ref_count, 1); device->status = CAIRO_STATUS_SUCCESS; @@ -184,6 +186,7 @@ _cairo_device_init (cairo_device_t *device, cairo_list_init (&device->shadow_caches); device->shadow_caches_size = 0; + CAIRO_TRACE_END (__func__); } /** @@ -331,22 +334,26 @@ slim_hidden_def (cairo_device_finish); void cairo_device_destroy (cairo_device_t *device) { + CAIRO_TRACE_BEGIN (__func__); cairo_user_data_array_t user_data; if (device == NULL || CAIRO_REFERENCE_COUNT_IS_INVALID (&device->ref_count)) { - return; + CAIRO_TRACE_END (__func__); + return; } assert (CAIRO_REFERENCE_COUNT_HAS_REFERENCE (&device->ref_count)); - if (! _cairo_reference_count_dec_and_test (&device->ref_count)) - return; + if (! _cairo_reference_count_dec_and_test (&device->ref_count)) { + CAIRO_TRACE_END (__func__); + return; + } while (! cairo_list_is_empty (&device->shadow_caches)) { cairo_shadow_cache_t *shadow; - shadow = cairo_list_first_entry (&device->shadow_caches, + shadow = cairo_list_first_entry (&device->shadow_caches, cairo_shadow_cache_t, link); @@ -366,6 +373,7 @@ cairo_device_destroy (cairo_device_t *device) device->backend->destroy (device); _cairo_user_data_array_fini (&user_data); + CAIRO_TRACE_END (__func__); } slim_hidden_def (cairo_device_destroy); |