[virt-tools-list] [PATCH virt-viewer 3/3] virt-viewer-window: Check for maximum zoom level

Pavel Grunt pgrunt at redhat.com
Wed May 20 13:45:20 UTC 2015


On Tue, 2015-05-19 at 11:12 -0500, Jonathon Jongsma wrote:
> On Tue, 2015-05-19 at 09:56 +0200, Pavel Grunt wrote:
> > Hi Jonathon,
> > 
> > On Mon, 2015-05-18 at 17:09 -0500, Jonathon Jongsma wrote:
> > > Hi Pavel,
> > > 
> > > To me, it feels a little bit like we're solving the wrong 
> > > problem 
> > > here.
> > > I spent a little bit of time testing the bug listed below, and 
> > > here 
> > > are
> > > my observations:
> > > 
> > > - When we use e.g. --zoom=200 at startup, virt-viewer tries to 
> > > make 
> > > the
> > > window 2x as big as the guest resolution.
> > > - if this window size would be greater than the size of the 
> > > client
> > > monitor, gnome-shell will prevent the window from getting that 
> > > large 
> > > and
> > > will limit it to the size of the client monitor.
> > > - From here, the behavior between vnc and spice-gtk (with 
> > > vdagent)
> > > differs:
> > > 
> > > spice-gtk:
> > > - the window is displayed at the requested zoom level, but the 
> > > guest
> > > resolution is resized smaller to fit within the client monitor 
> > 
> > 
> > Thats true for gnome-shell, but not for GNOME in RHEL6
> 
> OK, I admit that I didn't test a wide range of different setups. My
> understanding from your comments was that GNOME in RHEL6 allows the
> window to exceed the client desktop, so there's no bug at all, right?
> 

Unfortunately the bug is there, because when the initial
'virt_viewer_window_resize()' is done, it triggers
'virt_viewer_display_set_desktop_size()'. However the guest doesn't
resize because the '_geometry_changed()' call is prevented in
'virt_viewer_display_spice_size_allocate()'.

I think the bug doesn't happen in gnome-shell because the window
manager 'attaches' the window to a desktop side and this triggers the
'_size_allocate()' and resizes the guest.

> > 
> > > (taking
> > > into account the zoom factor)
> > > - clicking "view > zoom > normal size" will shrink the display 
> > > to 
> > > this
> > > smaller size and show it at 100% scale. 
> > > - This doesn't really seem like a bug to me
> > > 
> > > VNC:
> > > - Since the client cannot resize the resolution of a guest in 
> > > VNC,
> > > resizing a window is the same as zooming it. If gnome-shell 
> > > limits 
> > > the
> > > window to smaller than requested, it is effectively reducing the 
> > > zoom
> > > level. But the application seems to think its zoom level is 
> > > still 
> > > 200%.
> > > - clicking "view > zoom > normal size" shrinks the display and 
> > > scales it
> > > to a value less than 100% because it unscales the display by 
> > > 200% 
> > > (even
> > > though its actual zoom level is really only e.g. 150%).
> > > - In theory this all applies to spice-gtk without a vdagent as 
> > > well.
> > > 
> > > So I think that this bug could be fixed by unscaling the display 
> > > by 
> > > the
> > > actual effective zoom level (150% in the example above) instead 
> > > of 
> > > the
> > > zoom level given on the command line (200%). That seems simpler 
> > > than
> > > adding new accessors and calculating maximum zoom levels, etc.
> > > 
> > > What do you think?
> > 
> > Well, I don't think that zooming in should resize the guest (this 
> > is
> > happening in gnome-shell and in Windows), also I don't think that 
> > the
> > window should grow to exceed the monitor size (this is happening in
> > GNOME, Xfce).
> > 
> > I will go the way you suggested (unscaling the display), but I 
> > would
> > like to discuss whether 'resizing of guest' should happen.
> 
> Yes, that's a good discussion to have. I don't know the answer to 
> that
> since I don't completely understand the purpose of starting the 
> client
> with a --zoom value specified. Anybody else?
> 
I don't see a reason for starting it with a zoom level > 100.

> Jonathon
> 

Pavel




More information about the virt-tools-list mailing list