From 63e5e06d82170a91c5d944221948c7a1ebe14030 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kristian=20H=C3=B8gsberg?= Date: Sun, 4 Mar 2012 23:47:56 -0500 Subject: [PATCH] window: Only set opaque and input regions if they change Setting these regions damages the entire window or causes a repick, which we don't want to trigger if we don't need to. --- clients/window.c | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/clients/window.c b/clients/window.c index e917ce6ff..190b45664 100644 --- a/clients/window.c +++ b/clients/window.c @@ -818,8 +818,19 @@ window_attach_surface(struct window *window) return; } - wl_surface_set_input_region(window->surface, window->input_region); - wl_surface_set_opaque_region(window->surface, window->opaque_region); + if (window->input_region) { + wl_surface_set_input_region(window->surface, + window->input_region); + wl_region_destroy(window->input_region); + window->input_region = NULL; + } + + if (window->opaque_region) { + wl_surface_set_opaque_region(window->surface, + window->opaque_region); + wl_region_destroy(window->opaque_region); + window->opaque_region = NULL; + } wl_surface_damage(window->surface, 0, 0, window->allocation.width,