eis: store the sequence number in start_emulating

Co-Authored-by: Claude Code <noreply@anthropic.com>
Part-of: <https://gitlab.freedesktop.org/libinput/libei/-/merge_requests/381>
This commit is contained in:
Peter Hutterer 2026-03-11 14:57:06 +10:00 committed by Marge Bot
parent b4f45f2aff
commit 98cd152b70
2 changed files with 42 additions and 0 deletions

View file

@ -345,6 +345,7 @@ eis_queue_device_start_emulating_event(struct eis_device *device, uint32_t seque
{
struct eis_event *e = eis_event_new_for_device(device);
e->type = EIS_EVENT_DEVICE_START_EMULATING;
e->start_emulating.sequence = sequence;
eis_queue_event(e);
}

View file

@ -401,6 +401,47 @@ MUNIT_TEST(eistest_multiple_emulating)
return MUNIT_OK;
}
MUNIT_TEST(eistest_device_start_emulating_sequence)
{
_unref_(peck) *peck = peck_new();
peck_enable_eis_behavior(peck, PECK_EIS_BEHAVIOR_ACCEPT_CLIENT);
peck_enable_eis_behavior(peck, PECK_EIS_BEHAVIOR_DEFAULT_SEAT);
peck_enable_eis_behavior(peck, PECK_EIS_BEHAVIOR_HANDLE_BIND_SEAT);
peck_enable_eis_behavior(peck, PECK_EIS_BEHAVIOR_ADD_POINTER);
peck_enable_eis_behavior(peck, PECK_EIS_BEHAVIOR_RESUME_DEVICE);
peck_enable_ei_behavior(peck, PECK_EI_BEHAVIOR_HANDLE_ADDED);
peck_dispatch_until_stable(peck);
with_client(peck) {
_unref_(ei_event) *resumed =
peck_ei_next_event(ei, EI_EVENT_DEVICE_RESUMED);
}
for (int i = 0; i < 10; i++) {
uint32_t sequence = munit_rand_uint32();
with_client(peck) {
struct ei_device *device = peck_ei_get_default_pointer(peck);
ei_device_start_emulating(device, sequence);
ei_device_stop_emulating(device);
}
peck_dispatch_until_stable(peck);
with_server(peck) {
_unref_(eis_event) *start =
peck_eis_next_event(eis, EIS_EVENT_DEVICE_START_EMULATING);
munit_assert_uint32(eis_event_emulating_get_sequence(start), ==, sequence);
_unref_(eis_event) *stop =
peck_eis_next_event(eis, EIS_EVENT_DEVICE_STOP_EMULATING);
peck_assert_no_eis_events(eis);
}
}
return MUNIT_OK;
}
MUNIT_TEST(eistest_socket_overflow)
{
_unref_(peck) *peck = peck_new_context("mode", PECK_EI_RECEIVER);