diff options
author | Marc-André Lureau <marcandre.lureau@gmail.com> | 2015-02-15 16:54:33 +0100 |
---|---|---|
committer | Marc-André Lureau <marcandre.lureau@gmail.com> | 2015-03-05 21:31:26 +0100 |
commit | e426599d86b5e8062629912815e1d610da99aabc (patch) | |
tree | 0547bd949ce4da3ca6a0c52cd7c0b856648dcb34 /src/virt-viewer-session-spice.c | |
parent | 73f70899e4a8fae889d0911096ac0c260baf6702 (diff) | |
download | virt-viewer-e426599d86b5e8062629912815e1d610da99aabc.tar.gz virt-viewer-e426599d86b5e8062629912815e1d610da99aabc.tar.xz virt-viewer-e426599d86b5e8062629912815e1d610da99aabc.zip |
spice: enable/disable share folder
Connect/disconnect webdav channel to enable or disable sharing folder
Diffstat (limited to 'src/virt-viewer-session-spice.c')
-rw-r--r-- | src/virt-viewer-session-spice.c | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/src/virt-viewer-session-spice.c b/src/virt-viewer-session-spice.c index 4414212..093f8b7 100644 --- a/src/virt-viewer-session-spice.c +++ b/src/virt-viewer-session-spice.c @@ -961,6 +961,31 @@ name_changed(GObject *gobject G_GNUC_UNUSED, g_free(name); } +static void +update_share_folder(VirtViewerSessionSpice *self) +{ + gboolean share; + SpiceSession *session = self->priv->session; + GList *l, *channels; + + g_object_get(self, "share-folder", &share, NULL); + + channels = spice_session_get_channels(session); + for (l = channels; l != NULL; l = l->next) { + SpiceChannel *channel = l->data; + + if (!SPICE_IS_WEBDAV_CHANNEL(channel)) + continue; + + if (share) + spice_channel_connect(channel); + else + spice_channel_disconnect(channel, SPICE_CHANNEL_NONE); + } + + g_list_free(channels); +} + VirtViewerSession * virt_viewer_session_spice_new(VirtViewerApp *app, GtkWindow *main_window) { @@ -980,6 +1005,9 @@ virt_viewer_session_spice_new(VirtViewerApp *app, GtkWindow *main_window) G_CALLBACK(uuid_changed), self, 0); virt_viewer_signal_connect_object(self->priv->session, "notify::name", G_CALLBACK(name_changed), self, 0); + virt_viewer_signal_connect_object(self, "notify::share-folder", + G_CALLBACK(update_share_folder), self, + G_CONNECT_SWAPPED); g_object_bind_property(self->priv->session, "shared-dir", self, "shared-folder", |