Apply a patch by Padraig O'Briain to avoid a deadlock.

2006-09-29  Matthias Clasen  <mclasen@redhat.com>
        * gtk/gtkfilesystemunix.c: Apply a patch by Padraig O'Briain
        to avoid a deadlock.
This commit is contained in:
Matthias Clasen 2006-09-29 14:18:22 +00:00 committed by Matthias Clasen
parent fa2acd5921
commit 96741a1b05
2 changed files with 17 additions and 5 deletions

View File

@ -1,3 +1,8 @@
2006-09-29 Matthias Clasen <mclasen@redhat.com>
* gtk/gtkfilesystemunix.c: Apply a patch by Padraig O'Briain
to avoid a deadlock.
2006-09-27 Kristian Rietveld <kris@imendio.com>
* gtk/gtktreemodelfilter.c (gtk_tree_model_filter_free_level),

View File

@ -255,6 +255,7 @@ static GtkFileInfo *create_file_info (GtkFileFolderUnix *folder_uni
const char *mime_type);
static gboolean execute_callbacks_idle (gpointer data);
static void execute_callbacks (gpointer data);
static gboolean fill_in_names (GtkFileFolderUnix *folder_unix,
GError **error);
@ -443,7 +444,7 @@ gtk_file_system_unix_dispose (GObject *object)
system_unix->execute_callbacks_idle_id = 0;
/* call pending callbacks */
execute_callbacks_idle (system_unix);
execute_callbacks (system_unix);
}
G_OBJECT_CLASS (gtk_file_system_unix_parent_class)->dispose (object);
@ -699,15 +700,13 @@ struct callback_info
static gboolean
execute_callbacks_idle (gpointer data)
static void
execute_callbacks (gpointer data)
{
GSList *l;
gboolean unref_file_system = TRUE;
GtkFileSystemUnix *system_unix = GTK_FILE_SYSTEM_UNIX (data);
GDK_THREADS_ENTER ();
if (!system_unix->execute_callbacks_idle_id)
unref_file_system = FALSE;
else
@ -746,6 +745,14 @@ execute_callbacks_idle (gpointer data)
g_object_unref (system_unix);
system_unix->execute_callbacks_idle_id = 0;
}
static gboolean
execute_callbacks_idle (gpointer data)
{
GDK_THREADS_ENTER ();
execute_callbacks(data);
GDK_THREADS_LEAVE ();