diff options
author | Chris Wilson <chris@chris-wilson.co.uk> | 2010-03-22 22:20:58 +0000 |
---|---|---|
committer | Chris Wilson <chris@chris-wilson.co.uk> | 2010-03-22 22:20:58 +0000 |
commit | e214f09d633093ce9b2ca0bffce10bc68a6e30b0 (patch) | |
tree | 8bc6b507179f2bf82d791f990d2d9a6293e8f2ea /src/cairo-xcb-connection.c | |
parent | c235543bdfd8b1495cb7ae8f2a82b6267c4d9b84 (diff) | |
download | cairo-e214f09d633093ce9b2ca0bffce10bc68a6e30b0.tar.gz |
xcb: Consume the implicit reference for the cached connection on finish
Diffstat (limited to 'src/cairo-xcb-connection.c')
-rw-r--r-- | src/cairo-xcb-connection.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/src/cairo-xcb-connection.c b/src/cairo-xcb-connection.c index 18ccd4ab4..33ba45860 100644 --- a/src/cairo-xcb-connection.c +++ b/src/cairo-xcb-connection.c @@ -512,11 +512,13 @@ static void _device_finish (void *device) { cairo_xcb_connection_t *connection = device; + cairo_bool_t was_cached = FALSE; if (! cairo_list_is_empty (&connection->link)) { CAIRO_MUTEX_LOCK (_cairo_xcb_connections_mutex); cairo_list_del (&connection->link); CAIRO_MUTEX_UNLOCK (_cairo_xcb_connections_mutex); + was_cached = TRUE; } while (! cairo_list_is_empty (&connection->fonts)) { @@ -536,6 +538,9 @@ _device_finish (void *device) link); _cairo_xcb_screen_finish (screen); } + + if (was_cached) + cairo_device_destroy (device); } static void |