From b520a7a6346492b9ad950981ba9d3d516302173b Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Tue, 13 Nov 2012 15:12:01 -0500 Subject: [PATCH] Xft: Fix a deadlock on display close We can't call pango_xft_shutdown display while holding the same lock it is taking. https://bugzilla.gnome.org/show_bug.cgi?id=687470 --- pango/pangoxft-fontmap.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/pango/pangoxft-fontmap.c b/pango/pangoxft-fontmap.c index b8cdf30..9d210b5 100644 --- a/pango/pangoxft-fontmap.c +++ b/pango/pangoxft-fontmap.c @@ -143,8 +143,9 @@ close_display_cb (Display *display, GSList *tmp_list; G_LOCK (fontmaps); + tmp_list = g_slist_copy (fontmaps); + G_UNLOCK (fontmaps); - tmp_list = fontmaps; while (tmp_list) { PangoXftFontMap *xftfontmap = tmp_list->data; @@ -154,9 +155,9 @@ close_display_cb (Display *display, pango_xft_shutdown_display (display, xftfontmap->screen); } - registered_displays = g_slist_remove (registered_displays, display); + g_slist_free (tmp_list); - G_UNLOCK (fontmaps); + registered_displays = g_slist_remove (registered_displays, display); return 0; } -- 2.7.4