summaryrefslogtreecommitdiffstats
path: root/src/virt-viewer-session-spice.c
diff options
context:
space:
mode:
authorMarc-André Lureau <marcandre.lureau@gmail.com>2015-02-15 16:54:33 +0100
committerMarc-André Lureau <marcandre.lureau@gmail.com>2015-03-05 21:31:26 +0100
commite426599d86b5e8062629912815e1d610da99aabc (patch)
tree0547bd949ce4da3ca6a0c52cd7c0b856648dcb34 /src/virt-viewer-session-spice.c
parent73f70899e4a8fae889d0911096ac0c260baf6702 (diff)
downloadvirt-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.c28
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",