summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2023-04-02 13:23:19 -0400
committerMatthias Clasen <mclasen@redhat.com>2023-04-02 13:23:19 -0400
commit5e95c2284451f646ec6fd3ae286848d08f2b01f8 (patch)
tree5fa321e7344d2776094292357ce6066abca34064
parent70269a5aee61674ba9f8d2ae16950d1e7bb2ec5e (diff)
downloadgtk+-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.c10
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);
}