diff options
author | Matthias Clasen <mclasen@redhat.com> | 2023-04-02 13:23:19 -0400 |
---|---|---|
committer | Matthias Clasen <mclasen@redhat.com> | 2023-04-02 13:23:19 -0400 |
commit | 5e95c2284451f646ec6fd3ae286848d08f2b01f8 (patch) | |
tree | 5fa321e7344d2776094292357ce6066abca34064 | |
parent | 70269a5aee61674ba9f8d2ae16950d1e7bb2ec5e (diff) | |
download | gtk+-5e95c2284451f646ec6fd3ae286848d08f2b01f8.tar.gz |
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).
-rw-r--r-- | gdk/wayland/gdksurface-wayland.c | 10 |
1 files 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); } |