summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTimothy Arceri <t_arceri@yahoo.com.au>2013-04-09 16:48:27 +1000
committerAlexander Larsson <alexl@redhat.com>2013-04-10 09:49:23 +0200
commitef65827c7962ad534b4d044354249d74a832e1d4 (patch)
tree30465d08c943a1b0ab9855da4c3a6e73b0d1ddef
parent10331e649f843e9b50e78aeb6dae1b439bd27c57 (diff)
downloadgvfs-ef65827c7962ad534b4d044354249d74a832e1d4.tar.gz
Fix g_vfs_daemon_close_active_channels() to take a GVfsBackend argument and only close channels with that backend as a single daemon may handle multiple mounts/backends.
https://bugzilla.gnome.org/show_bug.cgi?id=511802
-rw-r--r--daemon/gvfsdaemon.c6
-rw-r--r--daemon/gvfsjobunmount.c2
2 files changed, 5 insertions, 3 deletions
diff --git a/daemon/gvfsdaemon.c b/daemon/gvfsdaemon.c
index 7db8ad2c..c0ac8caf 100644
--- a/daemon/gvfsdaemon.c
+++ b/daemon/gvfsdaemon.c
@@ -1029,11 +1029,13 @@ g_vfs_daemon_run_job_in_thread (GVfsDaemon *daemon,
}
void
-g_vfs_daemon_close_active_channels (GVfsDaemon *daemon)
+g_vfs_daemon_close_active_channels (GVfsDaemon *daemon,
+ GVfsBackend *backend)
{
GList *l;
for (l = daemon->job_sources; l != NULL; l = l->next)
- if (G_VFS_IS_CHANNEL (l->data))
+ if (G_VFS_IS_CHANNEL (l->data) &&
+ g_vfs_channel_get_backend (G_VFS_CHANNEL (l->data)) == backend)
g_vfs_channel_force_close (G_VFS_CHANNEL (l->data));
}
diff --git a/daemon/gvfsjobunmount.c b/daemon/gvfsjobunmount.c
index abf00972..d97f846b 100644
--- a/daemon/gvfsjobunmount.c
+++ b/daemon/gvfsjobunmount.c
@@ -294,9 +294,9 @@ unregister_mount_callback (GVfsDBusMountTracker *proxy,
/* Unlink job source from daemon */
daemon = g_vfs_backend_get_daemon (backend);
+ g_vfs_daemon_close_active_channels (daemon, backend);
g_vfs_job_source_closed (G_VFS_JOB_SOURCE (backend));
- g_vfs_daemon_close_active_channels (daemon);
}
/* Might be called on an i/o thread */