summaryrefslogtreecommitdiff
path: root/gtk/gtkfilesystemunix.c
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2006-09-29 14:18:22 +0000
committerMatthias Clasen <matthiasc@src.gnome.org>2006-09-29 14:18:22 +0000
commit96741a1b05d9450662dfe492e86ba57e8f136a9d (patch)
treec8f3735db13fab3067ad7d089c124ecd96056025 /gtk/gtkfilesystemunix.c
parentfa2acd5921b9a65848392377a668577f46482723 (diff)
downloadgtk+-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.c17
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 ();