From 5e95c2284451f646ec6fd3ae286848d08f2b01f8 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Sun, 2 Apr 2023 13:23:19 -0400 Subject: [PATCH] wayland: Be more careful about scale-factor Only emit notify::scale-factor if it actually changes. This potentially avoids a lot of work in GTK (reloading icons, etc). --- gdk/wayland/gdksurface-wayland.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/gdk/wayland/gdksurface-wayland.c b/gdk/wayland/gdksurface-wayland.c index ca27f65373..0cebc00474 100644 --- a/gdk/wayland/gdksurface-wayland.c +++ b/gdk/wayland/gdksurface-wayland.c @@ -261,11 +261,12 @@ gdk_wayland_surface_update_size (GdkSurface *surface, const GdkFractionalScale *scale) { GdkWaylandSurface *impl = GDK_WAYLAND_SURFACE (surface); - gboolean width_changed, height_changed, scale_changed; + gboolean width_changed, height_changed, scale_changed, scale_factor_changed; width_changed = surface->width != width; height_changed = surface->height != height; scale_changed = !gdk_fractional_scale_equal (&impl->scale, scale); + scale_factor_changed = gdk_fractional_scale_to_int (&impl->scale) != gdk_fractional_scale_to_int (scale); if (!width_changed && !height_changed && !scale_changed) return; @@ -295,10 +296,9 @@ gdk_wayland_surface_update_size (GdkSurface *surface, if (height_changed) g_object_notify (G_OBJECT (surface), "height"); if (scale_changed) - { - g_object_notify (G_OBJECT (surface), "scale-factor"); - g_object_notify (G_OBJECT (surface), "scale"); - } + g_object_notify (G_OBJECT (surface), "scale"); + if (scale_factor_changed) + g_object_notify (G_OBJECT (surface), "scale-factor"); _gdk_surface_update_size (surface); } -- 2.30.2