summaryrefslogtreecommitdiff
path: root/src/cairo-xcb-connection.c
diff options
context:
space:
mode:
authorChris Wilson <chris@chris-wilson.co.uk>2010-03-22 22:20:58 +0000
committerChris Wilson <chris@chris-wilson.co.uk>2010-03-22 22:20:58 +0000
commite214f09d633093ce9b2ca0bffce10bc68a6e30b0 (patch)
tree8bc6b507179f2bf82d791f990d2d9a6293e8f2ea /src/cairo-xcb-connection.c
parentc235543bdfd8b1495cb7ae8f2a82b6267c4d9b84 (diff)
downloadcairo-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.c5
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