[ANNOUNCE] libei 1.4.0

Peter Hutterer peter.hutterer at who-t.net
Wed Feb 12 03:28:05 UTC 2025


libei 1.4.0 is now available. No changes since the 1.4 RC1.

libei is a library to send Emulated Input (EI) to a matching Emulated Input
Server (EIS) which can receive those events with libeis, also part of this
project.

libei uses GitLab releases, for tarballs please see:
https://gitlab.freedesktop.org/libinput/libei/-/releases/


libei 1.4 has a few new APIs:

ei_disconnect() is now public and thus can be invoked by the caller. Previously
the only way to disconnect was to release the last ref to the ei context (which
would then ei_disconnect() internally). This made cleanup code more difficult
than it needed to be. Callers can now ei_disconnect() and unref when they're
finished with the cleanup.

libei now provides an ei_ping() call with a corresponding EI_EVENT_PONG event.
Calling that function allows a caller to order events correctly, e.g. issuing
a request followed by ei_ping() guarantees that any effects of the request will
have been processed by the time the EI_EVENT_PONG arrives (and thus any events
after that the event are caused by other reasons).

libeis now provides an eis_ping() call and EIS_EVENT_PONG event that works
effectively just like the libei one.

This functionaliy has been part of the protocol already but was not previously
exposed.

The documentation has been updated that the modifiers event
(eis_device_keyboard_send_xkb_modifiers()) should be generated fro any state
change. This makes proper tracking of the XKB state in the client more reliable
(well, possible). Note that for proper tacking the client will require the use
of ei_ping() so it can associate any key events with the correct modifier state
at the time.


Erik Jensen (1):
      Specify MODIFIERS to be sent for any state change.

Peter Hutterer (56):
      README: reword the blurb about short lived applications
      doc: demote the socket backend in the documentation
      Add a few missing va_end
      test: add a few non-null checks to make the static analyzer happy
      util: silence out-of-bounds read warning
      util: fix a comment to use the right decimal marker for english
      util: fix a leaking fd in a test
      util: use xalloc instead of calloc to avoid NULL checks
      oeffis: rewrite sender_name to make the analyzer happy
      util: do an allocation null check in strstrip
      util: correct the fd validity check
      scanner: switch to using dataclasses
      Drop black, switch to ruff format
      Revert "util: silence out-of-bounds read warning"
      test: print the line no for peck_ei(s)_assert_no_events
      test: improve debugging for failed event type comparisons
      tools: fix colorprint in the demo server
      tool: allow for touchscreen-only seat in the demo server
      libei: fix an error message, spurious 'd'
      test: make the c++ build test mirror the c build test
      meson.build: allow disabling libei and libeis
      ei: declare struct ei_touch
      proto: correct some documentation regarding ei_touchscreen
      test: fix string encoding in the python test bindings
      util: Add the trace() debugging macro
      ei: make ei_disconnect() public
      eis: remove pending events on eis_device_remove()
      test: keep the announced interface as local variable
      test: switch a bool([...]) to any()
      test: ignore a ConnectionResetError during our dispatch
      test: ignore a failure to send a pong
      test: fix a spuriously failing timeout
      tools/debug-events: add missing linebreaks to the modifier event
      ei: indentation fix
      proto: add two missing comments for consistency
      test: drop the use of attr
      test: rename a variable to shut up ruff with default args
      CI: force all auto features to enabled
      doc: unwinding state before stop_emulating is the caller's responsibility
      protocol: fix the description summary for the touch events
      Add the ei_touchscreen.cancel event and ei_touch_cancel()
      doc: fix some linewrapping issues
      tools/demo-server: note that aborting on unknown events is bad
      doc: specifically mention that unknown events must be unref'd
      ei: revamp the internal sync callback
      eis: revamp the internal sync callback
      ei: add ei_ping() and the matching EI_EVENT_PONG
      eis: add eis_ping() and the matching EIS_EVENT_PONG
      test: add a test for sync events during frames
      eis: add EI_EVENT_SYNC as opaque event to correctly schedule callbacks
      ei: add EI_EVENT_SYNC as opaque event to correctly schedule callbacks
      proto: fix a trailing whitespace
      CI: drop the python-black naming from the ruff job
      pre-commit: update to the latest version of our hooks
      Reformat for ruff 0.9
      libei 1.4 RC1
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 195 bytes
Desc: not available
URL: <https://lists.freedesktop.org/archives/wayland-devel/attachments/20250212/eebbdc76/attachment.sig>


More information about the wayland-devel mailing list