diff --git a/gdk/wayland/gdkscreen-wayland.c b/gdk/wayland/gdkscreen-wayland.c index 2457ecea2a..6aff3a5a1a 100644 --- a/gdk/wayland/gdkscreen-wayland.c +++ b/gdk/wayland/gdkscreen-wayland.c @@ -1591,16 +1591,18 @@ output_handle_scale (void *data, GDK_NOTE (MISC, g_message ("handle scale output %d, scale %d", monitor->id, scale)); - if (monitor_has_xdg_output (monitor)) - return; - gdk_monitor_get_geometry (GDK_MONITOR (monitor), &previous_geometry); previous_scale = gdk_monitor_get_scale_factor (GDK_MONITOR (monitor)); + /* Set the scale from wl_output protocol, regardless of xdg-output support */ + gdk_monitor_set_scale_factor (GDK_MONITOR (monitor), scale); + + if (monitor_has_xdg_output (monitor)) + return; + width = previous_geometry.width * previous_scale; height = previous_geometry.height * previous_scale; - gdk_monitor_set_scale_factor (GDK_MONITOR (monitor), scale); monitor->width = width / scale; monitor->height = height / scale;