[virt-tools-list] [virt-viewer] [PATCH] session-spice: Only update displays geometry if the agent is connected

Jonathon Jongsma jjongsma at redhat.com
Tue Jun 2 22:03:51 UTC 2015


On Tue, 2015-06-02 at 19:07 +0200, Pavel Grunt wrote:
> Hi, it makes sense.
> 
> What about moving the check to virt_viewer_session_spice_apply_monitor_geometry()?

No, I don't think we can move it there. Applying the monitor geometry
does two things: 

- it allows spice-gtk to update its the internal state so that it can
stay in sync with the current display configuration
- it sends down an update to the guest (if the agent is connected)

Fabiano's patch should be OK because this particular case is a "fake"
display update intended only to send our current display configuration
down to a newly-connected agent. But if we move this logic to
_apply_monitor_geometry(), we will avoid updating spice-gtk whenever the
agent is not connected, even if the client's display configuration *was*
actually changed. I suspect this will cause some issues because
spice-gtk will have an out-of-sync internal state.

Jonathon


> 
> Pavel
> 
> On Tue, 2015-06-02 at 17:35 +0200, Fabiano Fidêncio wrote:
> > ---
> >  src/virt-viewer-session-spice.c | 11 ++++++++---
> >  1 file changed, 8 insertions(+), 3 deletions(-)
> > 
> > diff --git a/src/virt-viewer-session-spice.c b/src/virt-viewer-session-spice.c
> > index b69faa6..f763975 100644
> > --- a/src/virt-viewer-session-spice.c
> > +++ b/src/virt-viewer-session-spice.c
> > @@ -674,12 +674,17 @@ agent_connected_changed(SpiceChannel *cmain G_GNUC_UNUSED,
> >                          GParamSpec *pspec G_GNUC_UNUSED,
> >                          VirtViewerSessionSpice *self)
> >  {
> > +    gboolean agent_connected;
> > +
> >      // this will force refresh of application menu
> >      g_signal_emit_by_name(self, "session-display-updated");
> >  
> > -    /* this will force update displays geometry when the agent has connected
> > -     * after the application (eg: rebooting the guest) */
> > -    virt_viewer_session_update_displays_geometry(VIRT_VIEWER_SESSION(self));
> > +    g_object_get(cmain, "agent-connected", &agent_connected, NULL);
> > +    if (agent_connected) {
> > +        /* this will force update displays geometry when the agent has connected
> > +         * after the application (eg: rebooting the guest) */
> > +        virt_viewer_session_update_displays_geometry(VIRT_VIEWER_SESSION(self));
> > +    }
> >  }
> >  
> >  static void
> 
> _______________________________________________
> virt-tools-list mailing list
> virt-tools-list at redhat.com
> https://www.redhat.com/mailman/listinfo/virt-tools-list





More information about the virt-tools-list mailing list