From: Marc-André Lureau <marcandre.lureau@xxxxxxxxxx> Signed-off-by: Marc-André Lureau <marcandre.lureau@xxxxxxxxxx> --- src/remote-viewer.c | 70 ++++++++++++++++++++++++++++++++--------------------- 1 file changed, 43 insertions(+), 27 deletions(-) diff --git a/src/remote-viewer.c b/src/remote-viewer.c index b132214..fb5376c 100644 --- a/src/remote-viewer.c +++ b/src/remote-viewer.c @@ -85,6 +85,10 @@ static void spice_foreign_menu_updated(RemoteViewer *self); static void foreign_menu_title_changed(SpiceCtrlForeignMenu *menu, GParamSpec *pspec, RemoteViewer *self); #endif +static gboolean +remote_viewer_initial_connect(RemoteViewer *self, const gchar *type, + VirtViewerFile *vvfile, GError **error); + static void remote_viewer_dispose (GObject *object) { @@ -1080,6 +1084,41 @@ remote_viewer_session_connected(VirtViewerSession *session, g_free(uri); } +static gboolean +remote_viewer_initial_connect(RemoteViewer *self, const gchar *type, + VirtViewerFile *vvfile, GError **error) +{ + VirtViewerApp *app = VIRT_VIEWER_APP(self); + + if (!virt_viewer_app_create_session(app, type, error)) + return FALSE; + + g_signal_connect(virt_viewer_app_get_session(app), "session-connected", + G_CALLBACK(remote_viewer_session_connected), app); + + virt_viewer_session_set_file(virt_viewer_app_get_session(app), vvfile); +#ifdef HAVE_OVIRT + if (vvfile != NULL) { + OvirtForeignMenu *ovirt_menu; + ovirt_menu = ovirt_foreign_menu_new_from_file(vvfile); + if (ovirt_menu != NULL) { + virt_viewer_app_set_ovirt_foreign_menu(app, ovirt_menu); + } + } +#endif + + if (!virt_viewer_app_initial_connect(app, error)) { + if (*error == NULL) { + g_set_error_literal(error, + VIRT_VIEWER_ERROR, VIRT_VIEWER_ERROR_FAILED, + _("Failed to initiate connection")); + } + return FALSE; + } + + return TRUE; +} + static gboolean remote_viewer_start(VirtViewerApp *app, GError **err) { @@ -1114,8 +1153,9 @@ remote_viewer_start(VirtViewerApp *app, GError **err) spice_ctrl_foreign_menu_listen(priv->ctrl_foreign_menu, NULL, spice_ctrl_listen_async_cb, self); virt_viewer_app_show_status(VIRT_VIEWER_APP(self), _("Setting up Spice session...")); - } else { + } else #endif + { retry_dialog: if (priv->open_recent_dialog) { VirtViewerWindow *main_window = virt_viewer_app_get_main_window(app); @@ -1160,35 +1200,11 @@ retry_dialog: } else #endif { - if (!virt_viewer_app_create_session(app, type, &error)) + if (!remote_viewer_initial_connect(self, type, vvfile, &error)) goto cleanup; } - - g_signal_connect(virt_viewer_app_get_session(app), "session-connected", - G_CALLBACK(remote_viewer_session_connected), app); - - virt_viewer_session_set_file(virt_viewer_app_get_session(app), vvfile); -#ifdef HAVE_OVIRT - if (vvfile != NULL) { - OvirtForeignMenu *ovirt_menu; - ovirt_menu = ovirt_foreign_menu_new_from_file(vvfile); - if (ovirt_menu != NULL) { - virt_viewer_app_set_ovirt_foreign_menu(app, ovirt_menu); - } - } -#endif - - if (!virt_viewer_app_initial_connect(app, &error)) { - if (error == NULL) { - g_set_error_literal(&error, - VIRT_VIEWER_ERROR, VIRT_VIEWER_ERROR_FAILED, - _("Failed to initiate connection")); - } - goto cleanup; - } -#ifdef HAVE_SPICE_GTK } -#endif + ret = VIRT_VIEWER_APP_CLASS(remote_viewer_parent_class)->start(app, &error); -- 2.13.1.395.gf7b71de06 _______________________________________________ virt-tools-list mailing list virt-tools-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/virt-tools-list