[ANNOUNCE] libei 1.0.0

Peter Hutterer peter.hutterer at who-t.net
Wed Jun 7 23:56:55 UTC 2023


libei 1.0.0 is now available.


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/1.0.0

# Changes:

Note that there is one minor protocol change (`ei_connection.sync`) and
one ABI (not API) change in libeis since the RC2 despite previous
statements that the protocol and API are stable. In both cases it was
better to do it now while every user of libei(s) is still in draft than
having to special-case those instances for the next 10 years.
An rebuild will take care of of the ABI change, making sure libei and
libeis are both on 1.0.0 will take care of the protocol change.

Notable changes since RC2:

- meson requirements dropped back to 0.56 to allow for building on older distros
- Protocol
  - ei_connection.sync now takes a version argument to allow for
    future updates of the ei_callback interface. This is a protocol
    change.
  - the ei-scanner now exposes interface_arg + interface_arg_for
    and version_arg + version_arg_for to allow for better handling
    of arguments that refer to interfaces or versions, respectively
- Library:
  - The enum eis_event_type was synced with libei so identical events
    (e.g. EI_EVENT_FRAME and EIS_EVENT_FRAME) have the same enum
    value in both libraries. This fixes commit e6954b76d. This is an ABI
    break, a rebuild will take care of it.
  - sending an ei_device_scroll_discrete event with value 1 now logs a
    bug. This typically indicates a bug in the caller and the value
    should be a fraction or multiple of 120 instead.
  - a few missing functions are now public: eis_region_contains(),
    eis_region_get_physical_scale(), eis_device_get_context(),
    eis_seat_get_context(), eis_device_get_width() and
    eis_device_get_height()
  - libeis *for now* sends all negotiated interface versions back to the
    client during the initial handshake. This isn't required by the
    protocol but it ensures those parts of any new client are working
    correctly.

Please see the documentation here: https://libinput.pages.freedesktop.org/libei/

The git shortlog is below

Ian Douglas Scott (2):
      ei-scanner: Fix `--jinja-extra-data-file`, and make `mypy` check pass
      ei-scanner: Expose `interface_arg`, and also provide `interface_arg_for`

Peter Hutterer (39):
      meson.build: drop requirements back to 0.56
      CI: add a build test for our minimum meson version
      scanner: rework the main() function into something easier to test
      scanner: add tests for the extra data arguments
      ei-scanner: expose `version_arg` and `version_arg_for`
      proto: add a version argument to ei_connection.sync
      libei: check incoming objects' version for correctness
      libeis: check incoming objects' version for correctness
      log: remove trailing linebreaks from log messages
      Log a bug if a client tries to send a discrete value 1
      CI: add a comment to the meson build helper
      Remove unimplemented ei_device_get_keymap()
      ei: ei_device_get_width/height need to be public APIs
      doc: change the doxygen oeffis group to liboeffis
      tools: make the demo client send the correct discrete events
      eis: expose eis_device_get_context() and eis_seat_get_context()
      test: use the callback's version instead of hardcoding it a second time
      Correct a meaningless comment
      eis: sync event codes with libei
      CI: use meson setup in the abi check job
      CI: fix the ABI check job, it was using the wrong HEAD
      eis: add eis_region_get_physical_scale
      eis: expose eis_region_contains
      ei: more docs that data is in pixels or mm
      test: drop ifdef'd out test
      test: add tests for the eis region getters
      CI: remove a copy/pasted MESON_ARGS from the abicheck job
      ci: add a check that our event values cannot diverge
      test: check that the width/height are set for physical devices
      ei: remove unused ei_pingpong_new()
      tests: add tests for button events
      ei: removed unused ei_callback_new_for_id
      eis: send all our interface versions to the client
      test: add a unit test for ei_region_convert_point
      ei: fix a whitespace error
      test: don't over-ref the button/scroll devices
      test: add test for correct ei_device_close behavior
      test: ensure all returned interface versions are 1
      libei 1.0.0
-------------- 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/20230608/cc316f67/attachment.sig>


More information about the wayland-devel mailing list