diff options
author | Timothy Arceri <t_arceri@yahoo.com.au> | 2013-04-09 16:48:27 +1000 |
---|---|---|
committer | Alexander Larsson <alexl@redhat.com> | 2013-04-10 09:49:23 +0200 |
commit | ef65827c7962ad534b4d044354249d74a832e1d4 (patch) | |
tree | 30465d08c943a1b0ab9855da4c3a6e73b0d1ddef | |
parent | 10331e649f843e9b50e78aeb6dae1b439bd27c57 (diff) | |
download | gvfs-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.c | 6 | ||||
-rw-r--r-- | daemon/gvfsjobunmount.c | 2 |
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 */ |