Disconnect virt-viewer when receiving signal session-cancelled

This commit is contained in:
Guannan Ren 2012-01-31 14:37:17 +00:00 committed by Daniel P. Berrange
parent 8a6cb8c012
commit c3a4bdc039

View File

@ -91,6 +91,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);
@ -116,6 +119,7 @@ struct _VirtViewerAppPrivate {
VirtViewerSession *session;
gboolean active;
gboolean connected;
gboolean cancelled;
guint reconnect_poll; /* source id */
char *unixsock;
char *guri; /* prefered over ghost:gport */
@ -647,6 +651,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;
}
@ -788,6 +794,7 @@ virt_viewer_app_activate(VirtViewerApp *self)
if (ret != -1) {
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);
@ -983,7 +990,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);
@ -991,6 +998,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,