summaryrefslogtreecommitdiff
path: root/src/cairo-xcb-screen.c
diff options
context:
space:
mode:
authorUli Schlachter <psychon@znc.in>2011-07-20 10:42:52 +0200
committerUli Schlachter <psychon@znc.in>2011-07-20 10:53:46 +0200
commitac9482bdf00ec2295273ec69d3bca3e93e2ce183 (patch)
treec165268713942d43b41689314ee64d3c607f31c5 /src/cairo-xcb-screen.c
parentc28196d9451f006b91906b68564f3959ce48af46 (diff)
downloadcairo-ac9482bdf00ec2295273ec69d3bca3e93e2ce183.tar.gz
xcb: Fix a GC leak when a screen is finished
Signed-off-by: Uli Schlachter <psychon@znc.in>
Diffstat (limited to 'src/cairo-xcb-screen.c')
-rw-r--r--src/cairo-xcb-screen.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/cairo-xcb-screen.c b/src/cairo-xcb-screen.c
index 209747560..a7802c2df 100644
--- a/src/cairo-xcb-screen.c
+++ b/src/cairo-xcb-screen.c
@@ -80,6 +80,11 @@ _cairo_xcb_screen_finish (cairo_xcb_screen_t *screen)
for (i = 0; i < ARRAY_LENGTH (screen->stock_colors); i++)
cairo_surface_destroy (screen->stock_colors[i]);
+ for (i = 0; i < ARRAY_LENGTH (screen->gc); i++) {
+ if (((screen->gc_depths >> (8*i)) & 0xff) != 0)
+ _cairo_xcb_connection_free_gc (screen->connection, screen->gc[i]);
+ }
+
_cairo_cache_fini (&screen->linear_pattern_cache);
_cairo_cache_fini (&screen->radial_pattern_cache);
_cairo_freelist_fini (&screen->pattern_cache_entry_freelist);