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.
This commit is contained in:
Matthias Clasen 2020-05-20 10:55:27 -04:00
parent ae711d8301
commit 6d8153d8fd

View File

@ -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;