diff options
author | Matthias Clasen <mclasen@redhat.com> | 2006-09-29 14:18:22 +0000 |
---|---|---|
committer | Matthias Clasen <matthiasc@src.gnome.org> | 2006-09-29 14:18:22 +0000 |
commit | 96741a1b05d9450662dfe492e86ba57e8f136a9d (patch) | |
tree | c8f3735db13fab3067ad7d089c124ecd96056025 /gtk/gtkfilesystemunix.c | |
parent | fa2acd5921b9a65848392377a668577f46482723 (diff) | |
download | gtk+-96741a1b05d9450662dfe492e86ba57e8f136a9d.tar.gz |
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.
Diffstat (limited to 'gtk/gtkfilesystemunix.c')
-rw-r--r-- | gtk/gtkfilesystemunix.c | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/gtk/gtkfilesystemunix.c b/gtk/gtkfilesystemunix.c index 64ed3f7db6..23b24c01a1 100644 --- a/gtk/gtkfilesystemunix.c +++ b/gtk/gtkfilesystemunix.c @@ -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 (); |