xwayland: Remove related touchpoints when unrealizing windows
These sequences are forgotten to all purposes. Signed-off-by: Carlos Garnacho <carlosg@gnome.org> Reviewed-by: Olivier Fourdan <ofourdan@redhat.com>
This commit is contained in:
parent
b7cd48f71d
commit
44f250a7e8
|
@ -844,6 +844,20 @@ DDXRingBell(int volume, int pitch, int duration)
|
|||
{
|
||||
}
|
||||
|
||||
void
|
||||
xwl_seat_clear_touch(struct xwl_seat *xwl_seat, WindowPtr window)
|
||||
{
|
||||
struct xwl_touch *xwl_touch, *next_xwl_touch;
|
||||
|
||||
xorg_list_for_each_entry_safe(xwl_touch, next_xwl_touch,
|
||||
&xwl_seat->touches, link_touch) {
|
||||
if (xwl_touch->window->window == window) {
|
||||
xorg_list_del(&xwl_touch->link_touch);
|
||||
free(xwl_touch);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
InitInput(int argc, char *argv[])
|
||||
{
|
||||
|
|
|
@ -287,10 +287,10 @@ xwl_unrealize_window(WindowPtr window)
|
|||
xwl_screen = xwl_screen_get(screen);
|
||||
|
||||
xorg_list_for_each_entry(xwl_seat, &xwl_screen->seat_list, link) {
|
||||
if (!xwl_seat->focus_window)
|
||||
continue;
|
||||
if (xwl_seat->focus_window->window == window)
|
||||
if (xwl_seat->focus_window && xwl_seat->focus_window->window == window)
|
||||
xwl_seat->focus_window = NULL;
|
||||
|
||||
xwl_seat_clear_touch(xwl_seat, window);
|
||||
}
|
||||
|
||||
screen->UnrealizeWindow = xwl_screen->UnrealizeWindow;
|
||||
|
|
|
@ -159,6 +159,8 @@ void xwl_seat_set_cursor(struct xwl_seat *xwl_seat);
|
|||
|
||||
void xwl_seat_destroy(struct xwl_seat *xwl_seat);
|
||||
|
||||
void xwl_seat_clear_touch(struct xwl_seat *xwl_seat, WindowPtr window);
|
||||
|
||||
Bool xwl_screen_init_output(struct xwl_screen *xwl_screen);
|
||||
|
||||
struct xwl_output *xwl_output_create(struct xwl_screen *xwl_screen,
|
||||
|
|
Loading…
Reference in New Issue
Block a user