On 14/11/17 15:01, Victor Toso wrote: > Hi, > > On Tue, Nov 14, 2017 at 02:54:30PM -0200, Eduardo Lima (Etrunko) wrote: >> When connecting to a VM via oVirt instance, the original uri can not be >> retrieved using virt_viewer_session_get_uri(). Consequently, it was >> never saved, even though the connection succeeds and the actual callback >> for "session-connected" signal, which saves the URI, is invoked. >> >> To solve this problem, we always pass a copy of the guri as user-data >> parameter for the callback, and if the call to >> virt_viewer_session_get_uri() returns NULL, the parameter is used >> instead. >> >> Resolves: https://bugzilla.redhat.com/1459792 >> >> Signed-off-by: Eduardo Lima (Etrunko) <etrunko@xxxxxxxxxx> > > Reviewed-by: Victor Toso <victortoso@xxxxxxxxxx> > Pushed, thanks. > Thanks, >> --- >> src/remote-viewer.c | 21 ++++++++++----------- >> 1 file changed, 10 insertions(+), 11 deletions(-) >> >> diff --git a/src/remote-viewer.c b/src/remote-viewer.c >> index fb5376c..786b26b 100644 >> --- a/src/remote-viewer.c >> +++ b/src/remote-viewer.c >> @@ -85,10 +85,6 @@ 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) >> { >> @@ -1064,8 +1060,7 @@ remote_viewer_recent_add(gchar *uri, const gchar *mime_type) >> .mime_type = (char*)mime_type, >> }; >> >> - if (uri == NULL) >> - return; >> + g_return_if_fail(uri != NULL); >> >> recent = gtk_recent_manager_get_default(); >> meta.display_name = uri; >> @@ -1075,17 +1070,21 @@ remote_viewer_recent_add(gchar *uri, const gchar *mime_type) >> >> static void >> remote_viewer_session_connected(VirtViewerSession *session, >> - VirtViewerApp *self G_GNUC_UNUSED) >> + gchar *guri) >> { >> gchar *uri = virt_viewer_session_get_uri(session); >> const gchar *mime = virt_viewer_session_mime_type(session); >> >> + if (uri == NULL) >> + uri = g_strdup(guri); >> + >> remote_viewer_recent_add(uri, mime); >> g_free(uri); >> + g_free(guri); >> } >> >> static gboolean >> -remote_viewer_initial_connect(RemoteViewer *self, const gchar *type, >> +remote_viewer_initial_connect(RemoteViewer *self, const gchar *type, const gchar *guri, >> VirtViewerFile *vvfile, GError **error) >> { >> VirtViewerApp *app = VIRT_VIEWER_APP(self); >> @@ -1093,8 +1092,9 @@ remote_viewer_initial_connect(RemoteViewer *self, const gchar *type, >> 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); >> + G_CALLBACK(remote_viewer_session_connected), g_strdup(guri)); >> >> virt_viewer_session_set_file(virt_viewer_app_get_session(app), vvfile); >> #ifdef HAVE_OVIRT >> @@ -1200,12 +1200,11 @@ retry_dialog: >> } else >> #endif >> { >> - if (!remote_viewer_initial_connect(self, type, vvfile, &error)) >> + if (!remote_viewer_initial_connect(self, type, guri, vvfile, &error)) >> goto cleanup; >> } >> } >> >> - >> ret = VIRT_VIEWER_APP_CLASS(remote_viewer_parent_class)->start(app, &error); >> >> cleanup: >> -- >> 2.13.6 >> >> _______________________________________________ >> virt-tools-list mailing list >> virt-tools-list@xxxxxxxxxx >> https://www.redhat.com/mailman/listinfo/virt-tools-list -- Eduardo de Barros Lima (Etrunko) Software Engineer - RedHat etrunko@xxxxxxxxxx
Attachment:
signature.asc
Description: OpenPGP digital signature
_______________________________________________ virt-tools-list mailing list virt-tools-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/virt-tools-list