[virt-tools-list] [PATCH virt-viewer 05/10] spice: enable/disable share folder
Marc-André Lureau
marcandre.lureau at gmail.com
Sun Feb 15 16:18:38 UTC 2015
Connect/disconnect webdav channel to enable or disable sharing folder
---
src/virt-viewer-session-spice.c | 27 +++++++++++++++++++++++++++
1 file changed, 27 insertions(+)
diff --git a/src/virt-viewer-session-spice.c b/src/virt-viewer-session-spice.c
index 4414212..14bec06 100644
--- a/src/virt-viewer-session-spice.c
+++ b/src/virt-viewer-session-spice.c
@@ -961,6 +961,30 @@ name_changed(GObject *gobject G_GNUC_UNUSED,
g_free(name);
}
+static void
+update_share_folder(VirtViewerSessionSpice *self)
+{
+ gboolean share;
+ SpiceSession *session = self->priv->session;
+
+ g_object_get(self, "share-folder", &share, NULL);
+
+ GList *l, *channels = spice_session_get_channels(self->priv->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(l);
+}
+
VirtViewerSession *
virt_viewer_session_spice_new(VirtViewerApp *app, GtkWindow *main_window)
{
@@ -980,6 +1004,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",
--
2.1.0
More information about the virt-tools-list
mailing list