[virt-tools-list] [PATCH 2/2 v2] virt-viewer: Disconnect virt-viewer when receiving signal 'session-cancelled'
Guannan Ren
gren at redhat.com
Wed Jan 18 11:43:34 UTC 2012
---
src/virt-viewer-app.c | 17 ++++++++++++++++-
1 files changed, 16 insertions(+), 1 deletions(-)
diff --git a/src/virt-viewer-app.c b/src/virt-viewer-app.c
index 3b468b3..ed7050f 100644
--- a/src/virt-viewer-app.c
+++ b/src/virt-viewer-app.c
@@ -88,6 +88,9 @@ static void virt_viewer_app_server_cut_text(VirtViewerSession *session,
static void virt_viewer_app_bell(VirtViewerSession *session,
VirtViewerApp *self);
+static void virt_viewer_app_cancelled(VirtViewerSession *session,
+ VirtViewerApp *self);
+
static void virt_viewer_app_channel_open(VirtViewerSession *session,
VirtViewerSessionChannel *channel,
VirtViewerApp *self);
@@ -112,6 +115,7 @@ struct _VirtViewerAppPrivate {
VirtViewerSession *session;
gboolean active;
gboolean connected;
+ gboolean cancelled;
guint reconnect_poll; /* source id */
char *unixsock;
char *ghost;
@@ -619,6 +623,8 @@ virt_viewer_app_create_session(VirtViewerApp *self, const gchar *type)
G_CALLBACK(virt_viewer_app_server_cut_text), self);
g_signal_connect(priv->session, "session-bell",
G_CALLBACK(virt_viewer_app_bell), self);
+ g_signal_connect(priv->session, "session-cancelled",
+ G_CALLBACK(virt_viewer_app_cancelled), self);
return 0;
}
@@ -714,6 +720,7 @@ virt_viewer_app_activate(VirtViewerApp *self)
virt_viewer_app_show_status(self, _("Connecting to graphic server"));
priv->connected = FALSE;
+ priv->cancelled = FALSE;
priv->active = TRUE;
priv->grabbed = FALSE;
virt_viewer_app_update_title(self);
@@ -909,7 +916,7 @@ virt_viewer_app_disconnected(VirtViewerSession *session G_GNUC_UNUSED,
{
VirtViewerAppPrivate *priv = self->priv;
- if (!priv->connected) {
+ if (!priv->connected && !priv->cancelled) {
virt_viewer_app_simple_message_dialog(self,
_("Unable to connect to the graphic server %s"),
priv->pretty_address);
@@ -917,6 +924,14 @@ virt_viewer_app_disconnected(VirtViewerSession *session G_GNUC_UNUSED,
virt_viewer_app_deactivate(self);
}
+static void virt_viewer_app_cancelled(VirtViewerSession *session,
+ VirtViewerApp *self)
+{
+ VirtViewerAppPrivate *priv = self->priv;
+ priv->cancelled = TRUE;
+ virt_viewer_app_disconnected(session, self);
+}
+
static void virt_viewer_app_auth_refused(VirtViewerSession *session G_GNUC_UNUSED,
const char *msg,
--
1.7.7.5
More information about the virt-tools-list
mailing list