--- libgnomeui-2.16.0/file-chooser/gtkfilesystemgnomevfs.c.destroy-deadlock 2006-09-04 10:10:02.000000000 -0400 +++ libgnomeui-2.16.0/file-chooser/gtkfilesystemgnomevfs.c 2006-09-11 23:18:06.000000000 -0400 @@ -367,6 +367,7 @@ gpointer user_data); static gboolean execute_vfs_callbacks_idle (gpointer data); +static void execute_vfs_callbacks (gpointer data); static gchar *make_child_uri (const gchar *base_uri, const gchar *child_name, @@ -612,7 +613,7 @@ system_vfs->execute_vfs_callbacks_idle_id = 0; /* call pending callbacks */ - execute_vfs_callbacks_idle (system_vfs); + execute_vfs_callbacks (system_vfs); } /* cancel pending VFS operations */ @@ -3538,15 +3539,13 @@ } /* some code for making callback calls from idle */ -static gboolean -execute_vfs_callbacks_idle (gpointer data) +static void +execute_vfs_callbacks (gpointer data) { GSList *l; gboolean unref_file_system = TRUE; GtkFileSystemGnomeVFS *system_vfs = GTK_FILE_SYSTEM_GNOME_VFS (data); - GDK_THREADS_ENTER (); - if (!system_vfs->execute_vfs_callbacks_idle_id) unref_file_system = FALSE; else @@ -3568,6 +3567,14 @@ g_object_unref (system_vfs); system_vfs->execute_vfs_callbacks_idle_id = 0; +} + +static gboolean +execute_vfs_callbacks_idle (gpointer data) +{ + GDK_THREADS_ENTER (); + + execute_vfs_callbacks (data); GDK_THREADS_LEAVE ();