----- Original Message -----
> From: "Fabiano Fidencio" <[email protected]>
> To: "Pavel Grunt" <[email protected]>
> Cc: [email protected]
> Sent: Wednesday, July 29, 2015 9:56:23 AM
> Subject: Re: [virt-tools-list] [PATCH virt-viewer] session-spice:     Create  
> displays when channel connects
> 
> 
> 
> ----- Original Message -----
> > From: "Pavel Grunt" <[email protected]>
> > To: [email protected]
> > Sent: Tuesday, July 28, 2015 6:31:41 PM
> > Subject: [virt-tools-list] [PATCH virt-viewer] session-spice: Create
> >     displays when channel connects
> > 
> > The display channel emits "notify::monitor" only when its display is
> > enabled. If the display is not enabled then it is not listed in the
> > "View -> Displays" menu, because display widgets are created as a
> > reaction to the "notify::monitor".
> > Creating display widgets at the moment the channel connects makes sure
> > that displays are listed the "View -> Displays" menu and can be enabled.
> > 
> > Resolves:
> > https://bugs.freedesktop.org/show_bug.cgi?id=91489
> > ---
> >  src/virt-viewer-session-spice.c | 29 ++++++++++++++++++++++++++---
> >  1 file changed, 26 insertions(+), 3 deletions(-)
> > 
> > diff --git a/src/virt-viewer-session-spice.c
> > b/src/virt-viewer-session-spice.c
> > index 9976291..67d5a3f 100644
> > --- a/src/virt-viewer-session-spice.c
> > +++ b/src/virt-viewer-session-spice.c
> > @@ -766,9 +766,8 @@ destroy_display(gpointer data)
> >  }
> >  
> >  static void
> > -virt_viewer_session_spice_display_monitors(SpiceChannel *channel,
> > -                                           GParamSpec *pspec
> > G_GNUC_UNUSED,
> > -                                           VirtViewerSessionSpice *self)
> > +virt_viewer_session_spice_create_displays_for_channel(VirtViewerSessionSpice
> > *self,
> > +                                                      SpiceChannel
> > *channel)
> >  {
> >      GArray *monitors = NULL;
> >      GPtrArray *displays = NULL;
> > @@ -803,6 +802,29 @@
> > virt_viewer_session_spice_display_monitors(SpiceChannel
> > *channel,
> >          }
> >      }
> >  
> > +    g_clear_pointer(&monitors, g_array_unref);
> > +}
> > +
> > +static void
> > +virt_viewer_session_spice_display_monitors(SpiceChannel *channel,
> > +                                           GParamSpec *pspec
> > G_GNUC_UNUSED,
> > +                                           VirtViewerSessionSpice *self)
> > +{
> > +    GArray *monitors = NULL;
> > +    GPtrArray *displays = NULL;
> > +    GtkWidget *display;
> > +    guint i, monitors_max;
> > +
> > +    g_object_get(channel,
> > +                 "monitors", &monitors,
> > +                 "monitors-max", &monitors_max,
> > +                 NULL);
> > +    g_return_if_fail(monitors != NULL);
> > +    g_return_if_fail(monitors->len <= monitors_max);
> > +
> > +    virt_viewer_session_spice_create_displays_for_channel(self, channel);
> > +    displays = g_object_get_data(G_OBJECT(channel),
> > "virt-viewer-displays");
> > +
> >      for (i = 0; i < monitors->len; i++) {
> >          SpiceDisplayMonitorConfig *monitor = &g_array_index(monitors,
> >          SpiceDisplayMonitorConfig, i);
> >          display = g_ptr_array_index(displays, monitor->id);
> > @@ -856,6 +878,7 @@ virt_viewer_session_spice_channel_new(SpiceSession *s,
> >      }
> >  
> >      if (SPICE_IS_DISPLAY_CHANNEL(channel)) {
> > +        virt_viewer_session_spice_create_displays_for_channel(self,
> > channel);
> >          g_signal_emit_by_name(session, "session-initialized");
> >  
> >          virt_viewer_signal_connect_object(channel, "notify::monitors",
> > --
> > 2.4.6
> > 
> > _______________________________________________
> > virt-tools-list mailing list
> > [email protected]
> > https://www.redhat.com/mailman/listinfo/virt-tools-list
> > 
> 
> Nice catch!
> ACK!

Taking my ACK back.
It may cause some problem related to fullscreen monitor mapping, so some tests 
on this area could be done and well described in the commit log before have it 
pushed upstream.
Probably Jonathon will have a clearer idea about what problems it can cause, 
but from a small (face to face) discussions with Pavel we realized that it may 
cause (it's racy, actually, so it may or may not be related to the patch) one 
screen showing up instead of two.

> 
> _______________________________________________
> virt-tools-list mailing list
> [email protected]
> https://www.redhat.com/mailman/listinfo/virt-tools-list
> 

Best Regards,
--
Fabiano FidĂȘncio

_______________________________________________
virt-tools-list mailing list
[email protected]
https://www.redhat.com/mailman/listinfo/virt-tools-list

Reply via email to