From e3079393c400e3dc6498234d1d092f3072fa8b44 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sergio=20G=C3=B3mez?= Date: Wed, 8 Mar 2023 17:39:49 -0500 Subject: libweston: Add view unmap listener to pointer constraints MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Since the logic of pointer constraints assumes a valid view throughout, add a signal to disable constraints when its current view is unmapped by Weston. The assumption that a previously unmapped view is valid already leads to the constraints code crashing. This can happen when attaching a NULL buffer to the surface and commiting, which effectively unmaps the view with the side effect of clearing the surface's input region, which is then assumed valid inside maybe_warp_confined_pointer(). Fixes: #721 Signed-off-by: Sergio Gómez --- include/libweston/libweston.h | 2 ++ 1 file changed, 2 insertions(+) (limited to 'include') diff --git a/include/libweston/libweston.h b/include/libweston/libweston.h index 8dd32f3e..858bc50a 100644 --- a/include/libweston/libweston.h +++ b/include/libweston/libweston.h @@ -1476,6 +1476,7 @@ struct weston_view { struct weston_surface *surface; struct wl_list surface_link; struct wl_signal destroy_signal; + struct wl_signal unmap_signal; /* struct weston_paint_node::view_link */ struct wl_list paint_node_list; @@ -1635,6 +1636,7 @@ struct weston_pointer_constraint { bool hint_is_pending; struct wl_listener pointer_destroy_listener; + struct wl_listener view_unmap_listener; struct wl_listener surface_commit_listener; struct wl_listener surface_activate_listener; }; -- cgit v1.2.1