virt-viewer-display: fix guest display size on HiDPI host

Signed-off-by: Haochen Tong <i@hexchain.org>
This commit is contained in:
Haochen Tong 2020-08-06 02:21:35 +02:00 committed by hexchain
parent d8c329b024
commit 03f8a8ff5a
2 changed files with 14 additions and 0 deletions

View File

@ -363,6 +363,12 @@ virt_viewer_display_spice_set_desktop(VirtViewerDisplay *display,
{
VirtViewerDisplaySpicePrivate *priv;
guint desktopWidth, desktopHeight;
gint scale_factor = gtk_widget_get_scale_factor(GTK_WIDGET(display));
/* parameter width and height are guest monitor physical pixel sizes */
/* convert to application pixel sizes */
width /= scale_factor;
height /= scale_factor;
g_return_if_fail(VIRT_VIEWER_IS_DISPLAY_SPICE(display));

View File

@ -721,6 +721,14 @@ void virt_viewer_display_get_preferred_monitor_geometry(VirtViewerDisplay* self,
preferred->width = round(preferred->width * NORMAL_ZOOM_LEVEL / (double) zoom);
preferred->height = round(preferred->height * NORMAL_ZOOM_LEVEL / (double) zoom);
}
/* calculate device pixel size on HiDPI screens */
gint scale_factor = gtk_widget_get_scale_factor(GTK_WIDGET(self));
preferred->x *= scale_factor;
preferred->y *= scale_factor;
preferred->width *= scale_factor;
preferred->height *= scale_factor;
}
gint