[virt-tools-list] [virt-viewer 3/8 v4] virt-viewer-app: Add a GError arg to create_session()
Fabiano Fidêncio
fidencio at redhat.com
Fri Mar 27 16:21:53 UTC 2015
This is part of a small re-factoring that will have all connection
errors, when we won't be able to connect regardless of what changes on
the remote host, being treated by virt_viewer_app_initial_connect(),
avoiding weird behaviors as we have nowadays (like more than one error
dialog being shown or having the virt-viewer waiting forever for a guest
that will never show up).
Related: rhbz#1085216
---
src/remote-viewer.c | 14 ++++----------
src/virt-viewer-app.c | 6 +++++-
src/virt-viewer-app.h | 2 +-
src/virt-viewer.c | 2 +-
4 files changed, 11 insertions(+), 13 deletions(-)
diff --git a/src/remote-viewer.c b/src/remote-viewer.c
index 4110b1e..8a8bb9c 100644
--- a/src/remote-viewer.c
+++ b/src/remote-viewer.c
@@ -950,11 +950,9 @@ create_ovirt_session(VirtViewerApp *app, const char *uri, GError **err)
virt_viewer_app_set_connect_info(app, NULL, ghost, gport, gtlsport,
session_type, NULL, NULL, 0, NULL);
- if (virt_viewer_app_create_session(app, session_type) < 0) {
- g_set_error(&error, VIRT_VIEWER_ERROR, VIRT_VIEWER_ERROR_FAILED,
- _("Failed to create a session type %s"), session_type);
+ if (virt_viewer_app_create_session(app, session_type, &error) < 0)
goto error;
- }
+
#ifdef HAVE_SPICE_GTK
if (type == OVIRT_VM_DISPLAY_SPICE) {
SpiceSession *session;
@@ -1223,7 +1221,7 @@ remote_viewer_start(VirtViewerApp *app, GError **err)
g_signal_connect(app, "notify", G_CALLBACK(app_notified), self);
if (priv->controller) {
- if (virt_viewer_app_create_session(app, "spice") < 0) {
+ if (virt_viewer_app_create_session(app, "spice", &error) < 0) {
virt_viewer_app_simple_message_dialog(app, _("Couldn't create a Spice session"));
goto cleanup;
}
@@ -1285,12 +1283,8 @@ retry_dialog:
} else
#endif
{
- if (virt_viewer_app_create_session(app, type) < 0) {
- g_set_error(&error,
- VIRT_VIEWER_ERROR, VIRT_VIEWER_ERROR_FAILED,
- _("Couldn't create a session for this type: %s"), type);
+ if (virt_viewer_app_create_session(app, type, &error) < 0)
goto cleanup;
- }
}
virt_viewer_session_set_file(virt_viewer_app_get_session(app), vvfile);
diff --git a/src/virt-viewer-app.c b/src/virt-viewer-app.c
index dd0361f..6b58cf6 100644
--- a/src/virt-viewer-app.c
+++ b/src/virt-viewer-app.c
@@ -1052,7 +1052,7 @@ static void notify_software_reader_cb(GObject *gobject G_GNUC_UNUSED,
}
int
-virt_viewer_app_create_session(VirtViewerApp *self, const gchar *type)
+virt_viewer_app_create_session(VirtViewerApp *self, const gchar *type, GError **error)
{
g_return_val_if_fail(VIRT_VIEWER_IS_APP(self), -1);
VirtViewerAppPrivate *priv = self->priv;
@@ -1076,6 +1076,10 @@ virt_viewer_app_create_session(VirtViewerApp *self, const gchar *type)
} else
#endif
{
+ g_set_error(error,
+ VIRT_VIEWER_ERROR, VIRT_VIEWER_ERROR_FAILED,
+ _("Unsupported graphic type '%s'"), type);
+
virt_viewer_app_trace(self, "Guest %s has unsupported %s display type",
priv->guest_name, type);
virt_viewer_app_simple_message_dialog(self, _("Unknown graphic type for the guest %s"),
diff --git a/src/virt-viewer-app.h b/src/virt-viewer-app.h
index 1d7cf16..8c1268d 100644
--- a/src/virt-viewer-app.h
+++ b/src/virt-viewer-app.h
@@ -68,7 +68,7 @@ void virt_viewer_app_trace(VirtViewerApp *self, const char *fmt, ...);
void virt_viewer_app_simple_message_dialog(VirtViewerApp *self, const char *fmt, ...);
gboolean virt_viewer_app_is_active(VirtViewerApp *app);
void virt_viewer_app_free_connect_info(VirtViewerApp *self);
-int virt_viewer_app_create_session(VirtViewerApp *self, const gchar *type);
+int virt_viewer_app_create_session(VirtViewerApp *self, const gchar *type, GError **error);
gboolean virt_viewer_app_activate(VirtViewerApp *self, GError **error);
gboolean virt_viewer_app_initial_connect(VirtViewerApp *self, GError **error);
void virt_viewer_app_set_zoom_level(VirtViewerApp *self, gint zoom_level);
diff --git a/src/virt-viewer.c b/src/virt-viewer.c
index 7c73bc5..cba38e4 100644
--- a/src/virt-viewer.c
+++ b/src/virt-viewer.c
@@ -420,7 +420,7 @@ virt_viewer_extract_connect_info(VirtViewer *self,
goto cleanup;
}
- if (virt_viewer_app_create_session(app, type) < 0)
+ if (virt_viewer_app_create_session(app, type, error) < 0)
goto cleanup;
xpath = g_strdup_printf("string(/domain/devices/graphics[@type='%s' v4]/@port)", type);
--
2.3.3
More information about the virt-tools-list
mailing list