From e9fdb35687f4f395fb00225d0f87125f784a93c5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20=C3=85dahl?= Date: Tue, 3 Sep 2019 17:13:17 +0200 Subject: [PATCH] Revert "gdk/wayland: go through monitor to compute scale factor" This reverts commit 6d545b6d03caba8e7718a73c6e0abe35a4133fe0. Reverting as this broke multi DPI systems, where a client is expected to render at scale = 1 if it is only visible on a scale = 1 monitor. Fixes: https://gitlab.gnome.org/GNOME/gtk/issues/2129 --- gdk/wayland/gdkwindow-wayland.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/gdk/wayland/gdkwindow-wayland.c b/gdk/wayland/gdkwindow-wayland.c index be0b9681d6..1c62c8f65e 100644 --- a/gdk/wayland/gdkwindow-wayland.c +++ b/gdk/wayland/gdkwindow-wayland.c @@ -651,10 +651,11 @@ on_frame_clock_after_paint (GdkFrameClock *clock, static void window_update_scale (GdkWindow *window) { + GdkWindowImplWayland *impl = GDK_WINDOW_IMPL_WAYLAND (window->impl); GdkWaylandDisplay *display_wayland = GDK_WAYLAND_DISPLAY (gdk_window_get_display (window)); guint32 scale; - int i; + GSList *l; if (display_wayland->compositor_version < WL_SURFACE_HAS_BUFFER_SCALE) { @@ -663,10 +664,10 @@ window_update_scale (GdkWindow *window) } scale = 1; - for (i = 0; i < display_wayland->monitors->len; i++) + for (l = impl->display_server.outputs; l != NULL; l = l->next) { - GdkWaylandMonitor *monitor = display_wayland->monitors->pdata[i]; - int output_scale = gdk_monitor_get_scale_factor (GDK_MONITOR (monitor)); + guint32 output_scale = + _gdk_wayland_screen_get_output_scale (display_wayland->screen, l->data); scale = MAX (scale, output_scale); }