From: Matthias Clasen Date: Wed, 20 May 2020 14:55:27 +0000 (-0400) Subject: gdk: Short-circuit some surface setters X-Git-Tag: archive/raspbian/4.4.1+ds1-2+rpi1^2~18^2~16^2~136^2 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=6d8153d8fdce0d6d6745b4cf6585fc9655cc89d7;p=gtk4.git gdk: Short-circuit some surface setters Don't call into the backends when the input region or shadow width don't actually change. This avoid distracting calls in debug logs, and just generally is the right thing to do. --- diff --git a/gdk/gdksurface.c b/gdk/gdksurface.c index 104bc719d2..a154319cde 100644 --- a/gdk/gdksurface.c +++ b/gdk/gdksurface.c @@ -2118,6 +2118,9 @@ gdk_surface_set_input_region (GdkSurface *surface, if (GDK_SURFACE_DESTROYED (surface)) return; + if (cairo_region_equal (surface->input_region, region)) + return; + if (surface->input_region) cairo_region_destroy (surface->input_region); @@ -2702,6 +2705,12 @@ gdk_surface_set_shadow_width (GdkSurface *surface, g_return_if_fail (!GDK_SURFACE_DESTROYED (surface)); g_return_if_fail (left >= 0 && right >= 0 && top >= 0 && bottom >= 0); + if (surface->shadow_left == left && + surface->shadow_right == right && + surface->shadow_top == top && + surface->shadow_bottom == bottom) + return; + surface->shadow_top = top; surface->shadow_left = left; surface->shadow_right = right;