xwayland: wrong expecting_event

According to

https://wayland.app/protocols/wayland#wl_seat:event:capabilities

Compositor might send capabilities when its capabilities change.
Decrease expecting_event here without any check might cause a
negative expecting_count.

(cherry picked from commit 6bf6a9bff2)
(cherry picked from commit 6a37e21ca4)

Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/2151>
This commit is contained in:
Yixue Wang 2026-01-28 16:11:23 +08:00 committed by Marge Bot
parent 7a8f8ef9b7
commit ba6c070002
2 changed files with 6 additions and 1 deletions

View file

@ -1923,7 +1923,10 @@ seat_handle_capabilities(void *data, struct wl_seat *seat,
release_touch(xwl_seat);
}
xwl_seat->xwl_screen->expecting_event--;
if (xwl_seat->caps_initialized == FALSE) {
xwl_seat->caps_initialized = TRUE;
xwl_seat->xwl_screen->expecting_event--;
}
}
static void
@ -1974,6 +1977,7 @@ create_input_device(struct xwl_screen *xwl_screen, uint32_t id, uint32_t version
wl_registry_bind(xwl_screen->registry, id,
&wl_seat_interface, min(version, seat_version));
xwl_seat->id = id;
xwl_seat->caps_initialized = FALSE;
xwl_cursor_init(&xwl_seat->cursor, xwl_seat->xwl_screen,
xwl_seat_update_cursor);

View file

@ -77,6 +77,7 @@ struct xwl_seat {
uint32_t id;
uint32_t pointer_enter_serial;
uint8_t pointer_enter_count;
Bool caps_initialized;
struct xorg_list link;
CursorPtr x_cursor;
OsTimerPtr x_cursor_timer;