]> Pileus Git - ~andy/gtk/commitdiff
Remove the idle source in ::finalize...
authorEmmanuele Bassi <ebassi@gnome.org>
Thu, 10 Aug 2006 12:08:51 +0000 (12:08 +0000)
committerEmmanuele Bassi <ebassi@src.gnome.org>
Thu, 10 Aug 2006 12:08:51 +0000 (12:08 +0000)
2006-08-10  Emmanuele Bassi  <ebassi@gnome.org>

* gtk/gtkrecentchoosermenu.c:
(gtk_recent_chooser_menu_finalize): Remove the idle
source in ::finalize...

(idle_populate_func),
(idle_populate_clean_up): ...and reset the idle source
id at the end of the idle loop while we hold the GDK mutex
lock. (#350605, reported by Wouter Bolsterlee, patch by
Chris Wilson)

ChangeLog
ChangeLog.pre-2-10
gtk/gtkrecentchoosermenu.c

index 9b7691763ee75f6651c5fbf3ca409bb25a69aa55..73c7dd250195c897556185c7375b4c89bc16e641 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,15 @@
+2006-08-10  Emmanuele Bassi  <ebassi@gnome.org>
+
+       * gtk/gtkrecentchoosermenu.c:
+       (gtk_recent_chooser_menu_finalize): Remove the idle
+       source in ::finalize...
+       
+       (idle_populate_func),
+       (idle_populate_clean_up): ...and reset the idle source
+       id at the end of the idle loop while we hold the GDK mutex
+       lock. (#350605, reported by Wouter Bolsterlee, patch by
+       Chris Wilson)
+
 2006-08-10  Michael Natterer  <mitch@imendio.com>
 
        * gdk/quartz/gdkwindow-quartz.c
index 9b7691763ee75f6651c5fbf3ca409bb25a69aa55..73c7dd250195c897556185c7375b4c89bc16e641 100644 (file)
@@ -1,3 +1,15 @@
+2006-08-10  Emmanuele Bassi  <ebassi@gnome.org>
+
+       * gtk/gtkrecentchoosermenu.c:
+       (gtk_recent_chooser_menu_finalize): Remove the idle
+       source in ::finalize...
+       
+       (idle_populate_func),
+       (idle_populate_clean_up): ...and reset the idle source
+       id at the end of the idle loop while we hold the GDK mutex
+       lock. (#350605, reported by Wouter Bolsterlee, patch by
+       Chris Wilson)
+
 2006-08-10  Michael Natterer  <mitch@imendio.com>
 
        * gdk/quartz/gdkwindow-quartz.c
index 54ee86302eb3a3ea1d2236fc17e68e1d9d94976e..1e066744b37c7020a558a258bca88170804c83b4 100644 (file)
@@ -250,6 +250,9 @@ gtk_recent_chooser_menu_finalize (GObject *object)
   g_signal_handler_disconnect (priv->manager, priv->manager_changed_id);
   priv->manager_changed_id = 0;
 
+  if (priv->populate_id)
+    g_source_remove (priv->populate_id);
+
   priv->manager = NULL;
   
   if (priv->sort_data_destroy)
@@ -952,7 +955,10 @@ idle_populate_func (gpointer data)
   GDK_THREADS_ENTER ();
 
   pdata = (MenuPopulateData *) data;
-  
+  priv = pdata->menu->priv;
+
+  priv->populate_id = 0;
+
   if (!pdata->items)
     {
       pdata->items = gtk_recent_chooser_get_items (GTK_RECENT_CHOOSER (pdata->menu));
@@ -984,7 +990,6 @@ idle_populate_func (gpointer data)
     }
 
   info = g_list_nth_data (pdata->items, pdata->loaded_items);
-  priv = pdata->menu->priv;
 
   /* skip non-local items on request */
   if (priv->local_only &&
@@ -1062,11 +1067,7 @@ check_and_return:
 static void
 idle_populate_clean_up (gpointer data)
 {
-  MenuPopulateData *pdata = data;
-
-  pdata->menu->priv->populate_id = 0;
-
-  g_slice_free (MenuPopulateData, pdata);
+  g_slice_free (MenuPopulateData, data);
 }
 
 static void