vnc: show an error dialog upon vnc-error

For example when connecting by accident to a spice server

Signed-off-by: Uri Lublin <uril@redhat.com>
This commit is contained in:
Uri Lublin 2020-10-27 19:53:36 +02:00
parent b7a2f05266
commit de5cd71013
3 changed files with 39 additions and 3 deletions

View File

@ -78,6 +78,9 @@ void virt_viewer_app_about_delete(GtkWidget *dialog, void *dummy, VirtViewerApp
/* Internal methods */
static void virt_viewer_app_connected(VirtViewerSession *session,
VirtViewerApp *self);
static void virt_viewer_app_error(VirtViewerSession *session G_GNUC_UNUSED,
const gchar *msg,
VirtViewerApp *self);
static void virt_viewer_app_initialized(VirtViewerSession *session,
VirtViewerApp *self);
static void virt_viewer_app_disconnected(VirtViewerSession *session,
@ -1292,6 +1295,8 @@ virt_viewer_app_create_session(VirtViewerApp *self, const gchar *type, GError **
g_signal_connect(priv->session, "session-initialized",
G_CALLBACK(virt_viewer_app_initialized), self);
g_signal_connect(priv->session, "session-error",
G_CALLBACK(virt_viewer_app_error), self);
g_signal_connect(priv->session, "session-connected",
G_CALLBACK(virt_viewer_app_connected), self);
g_signal_connect(priv->session, "session-disconnected",
@ -1654,8 +1659,6 @@ virt_viewer_app_connected(VirtViewerSession *session G_GNUC_UNUSED,
virt_viewer_app_show_status(self, _("Connected to graphic server"));
}
static void
virt_viewer_app_initialized(VirtViewerSession *session G_GNUC_UNUSED,
VirtViewerApp *self)
@ -1690,6 +1693,18 @@ virt_viewer_app_disconnected(VirtViewerSession *session G_GNUC_UNUSED, const gch
virt_viewer_app_deactivate(self, connect_error);
}
static void
virt_viewer_app_error(VirtViewerSession *session G_GNUC_UNUSED,
const gchar *msg,
VirtViewerApp *self)
{
VirtViewerAppPrivate *priv = self->priv;
priv->connected = FALSE; /* display error dialog */
virt_viewer_app_disconnected(session, msg, self);
}
static void virt_viewer_app_cancelled(VirtViewerSession *session,
VirtViewerApp *self)
{
@ -1698,7 +1713,6 @@ static void virt_viewer_app_cancelled(VirtViewerSession *session,
virt_viewer_app_disconnected(session, NULL, self);
}
static void virt_viewer_app_auth_refused(VirtViewerSession *session,
const char *msg,
VirtViewerApp *self)

View File

@ -128,6 +128,15 @@ virt_viewer_session_vnc_disconnected(VncDisplay *vnc G_GNUC_UNUSED,
VIRT_VIEWER_DISPLAY_SHOW_HINT_READY, FALSE);
}
static void
virt_viewer_session_vnc_error(VncDisplay *vnc G_GNUC_UNUSED,
const gchar* msg,
VirtViewerSessionVnc *session)
{
g_warning("vnc-session: got vnc error %s", msg);
g_signal_emit_by_name(session, "session-error", msg);
}
static void
virt_viewer_session_vnc_initialized(VncDisplay *vnc G_GNUC_UNUSED,
VirtViewerSessionVnc *session)
@ -386,6 +395,8 @@ virt_viewer_session_vnc_close(VirtViewerSession* session)
G_CALLBACK(virt_viewer_session_vnc_initialized), session);
g_signal_connect(self->priv->vnc, "vnc-disconnected",
G_CALLBACK(virt_viewer_session_vnc_disconnected), session);
g_signal_connect(self->priv->vnc, "vnc-error",
G_CALLBACK(virt_viewer_session_vnc_error), session);
g_signal_connect(self->priv->vnc, "vnc-bell",
G_CALLBACK(virt_viewer_session_vnc_bell), session);
@ -418,6 +429,8 @@ virt_viewer_session_vnc_new(VirtViewerApp *app, GtkWindow *main_window)
G_CALLBACK(virt_viewer_session_vnc_initialized), session);
g_signal_connect(session->priv->vnc, "vnc-disconnected",
G_CALLBACK(virt_viewer_session_vnc_disconnected), session);
g_signal_connect(session->priv->vnc, "vnc-error",
G_CALLBACK(virt_viewer_session_vnc_error), session);
g_signal_connect(session->priv->vnc, "vnc-bell",
G_CALLBACK(virt_viewer_session_vnc_bell), session);

View File

@ -272,6 +272,15 @@ virt_viewer_session_class_init(VirtViewerSessionClass *class)
G_TYPE_NONE,
0);
g_signal_new("session-error",
G_OBJECT_CLASS_TYPE(object_class),
G_SIGNAL_RUN_FIRST,
0,
NULL, NULL,
g_cclosure_marshal_VOID__STRING,
G_TYPE_NONE,
1,
G_TYPE_STRING);
g_signal_new("session-disconnected",
G_OBJECT_CLASS_TYPE(object_class),
G_SIGNAL_RUN_FIRST,