libweston: Add view unmap listener to pointer constraints
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 <sergio.g.delreal@gmail.com> (cherry picked from commit e3079393c400e3dc6498234d1d092f3072fa8b44)
This commit is contained in:
committed by
Marius Vlad
parent
0bd68d9ad6
commit
21e46364c0
@@ -1452,6 +1452,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;
|
||||
@@ -1605,6 +1606,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;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user