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
|
void
|
||||||
InitInput(int argc, char *argv[])
|
InitInput(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
|
|
|
@ -287,10 +287,10 @@ xwl_unrealize_window(WindowPtr window)
|
||||||
xwl_screen = xwl_screen_get(screen);
|
xwl_screen = xwl_screen_get(screen);
|
||||||
|
|
||||||
xorg_list_for_each_entry(xwl_seat, &xwl_screen->seat_list, link) {
|
xorg_list_for_each_entry(xwl_seat, &xwl_screen->seat_list, link) {
|
||||||
if (!xwl_seat->focus_window)
|
if (xwl_seat->focus_window && xwl_seat->focus_window->window == window)
|
||||||
continue;
|
|
||||||
if (xwl_seat->focus_window->window == window)
|
|
||||||
xwl_seat->focus_window = NULL;
|
xwl_seat->focus_window = NULL;
|
||||||
|
|
||||||
|
xwl_seat_clear_touch(xwl_seat, window);
|
||||||
}
|
}
|
||||||
|
|
||||||
screen->UnrealizeWindow = xwl_screen->UnrealizeWindow;
|
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_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);
|
Bool xwl_screen_init_output(struct xwl_screen *xwl_screen);
|
||||||
|
|
||||||
struct xwl_output *xwl_output_create(struct xwl_screen *xwl_screen,
|
struct xwl_output *xwl_output_create(struct xwl_screen *xwl_screen,
|
||||||
|
|
Loading…
Reference in New Issue
Block a user