[pango] Xft: Fix a deadlock on display close



commit b520a7a6346492b9ad950981ba9d3d516302173b
Author: Matthias Clasen <mclasen redhat com>
Date:   Tue Nov 13 15:12:01 2012 -0500

    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 files 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;
 }



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]