[virt-tools-list] [PATCH virt-viewer] spice: avoid rounding issues when scaling up display

Christophe Fergeau cfergeau at redhat.com
Thu Oct 18 08:19:10 UTC 2012


On Wed, Oct 17, 2012 at 04:53:14PM +0200, Marc-André Lureau wrote:
> Fix some unwanted guest resize due to rounding issues (at least when
> scaling up)

I'm not really sure what kind of issues this fixes, but why not... Patch
looks good.

Christophe

> 
> We may want to save the original remote desktop size, instead of
> always checking widget requisition. That way zooming shouldn't resize
> guest at all, but it seems tricky to handle that special case vs user
> window resize that should trigger guest resize.
> 
> https://bugzilla.redhat.com/show_bug.cgi?id=856678
> ---
>  src/virt-viewer-display-spice.c | 5 +++--
>  src/virt-viewer-display.c       | 4 ++--
>  2 files changed, 5 insertions(+), 4 deletions(-)
> 
> diff --git a/src/virt-viewer-display-spice.c b/src/virt-viewer-display-spice.c
> index 8845ee0..a035517 100644
> --- a/src/virt-viewer-display-spice.c
> +++ b/src/virt-viewer-display-spice.c
> @@ -24,6 +24,7 @@
>  
>  #include <config.h>
>  
> +#include <math.h>
>  #include <spice-audio.h>
>  
>  #include <glib/gi18n.h>
> @@ -191,8 +192,8 @@ virt_viewer_display_spice_size_allocate(VirtViewerDisplaySpice *self,
>      if (virt_viewer_display_get_zoom(VIRT_VIEWER_DISPLAY(self))) {
>          zoom = virt_viewer_display_get_zoom_level(VIRT_VIEWER_DISPLAY(self));
>  
> -        dw /= ((double)zoom / 100.0);
> -        dh /= ((double)zoom / 100.0);
> +        dw = round(dw * 100 / zoom);
> +        dh = round(dh * 100 / zoom);
>      }
>  
>      g_object_get(self, "nth-display", &nth, NULL);
> diff --git a/src/virt-viewer-display.c b/src/virt-viewer-display.c
> index fe7ce4f..e5cdeb7 100644
> --- a/src/virt-viewer-display.c
> +++ b/src/virt-viewer-display.c
> @@ -354,8 +354,8 @@ virt_viewer_display_size_request(GtkWidget *widget,
>  
>      if (priv->dirty) {
>          if (priv->zoom) {
> -            requisition->width += priv->desktopWidth * priv->zoom_level / 100;
> -            requisition->height += priv->desktopHeight * priv->zoom_level / 100;
> +            requisition->width += round(priv->desktopWidth * priv->zoom_level / 100.0);
> +            requisition->height += round(priv->desktopHeight * priv->zoom_level / 100.0);
>          } else {
>              requisition->width += priv->desktopWidth;
>              requisition->height += priv->desktopHeight;
> -- 
> 1.7.11.7
> 
> _______________________________________________
> virt-tools-list mailing list
> virt-tools-list at redhat.com
> https://www.redhat.com/mailman/listinfo/virt-tools-list
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: not available
URL: <http://listman.redhat.com/archives/virt-tools-list/attachments/20121018/9a02b3d7/attachment.sig>


More information about the virt-tools-list mailing list