[virt-tools-list] [PATCH virt-viewer v3] remote-viewer: Pass guri to remote_viewer_session_connected

Eduardo Lima (Etrunko) etrunko at redhat.com
Tue Nov 14 17:28:23 UTC 2017


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 at redhat.com>
> 
> Reviewed-by: Victor Toso <victortoso at redhat.com>
> 

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 at redhat.com
>> https://www.redhat.com/mailman/listinfo/virt-tools-list


-- 
Eduardo de Barros Lima (Etrunko)
Software Engineer - RedHat
etrunko at redhat.com

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: OpenPGP digital signature
URL: <http://listman.redhat.com/archives/virt-tools-list/attachments/20171114/8d7176d5/attachment.sig>


More information about the virt-tools-list mailing list