platform/upstream/libevdev.git
4 years agotest: fix a few scan-build errors about dead storage
Peter Hutterer [Wed, 19 Feb 2020 03:06:18 +0000 (13:06 +1000)]
test: fix a few scan-build errors about dead storage

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
4 years agoUpdate the BTN_TOOL bits correctly during SYN_DROPPED handling
Peter Hutterer [Thu, 13 Feb 2020 11:35:51 +0000 (21:35 +1000)]
Update the BTN_TOOL bits correctly during SYN_DROPPED handling

Where at least one touch ends during SYN_DROPPED, we send out two event
frames: one with all applicable touch sequences ending (tracking id -1) and
the second one with the whole device state *and* the applicable touch
sequences starting (tracking id != -1).

This requires us to also update the BTN_TOOL_ bits correctly so that they are
correct after the first frame. For that we count the number of previously
known touches and send a 0 event for the matching BTN_TOOL_ bit, together with
a 1 event for the currently known touches.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
4 years agoTerminate all stopped/changed touches during SYN_DROPPED in the first frame
Peter Hutterer [Thu, 13 Feb 2020 11:11:14 +0000 (21:11 +1000)]
Terminate all stopped/changed touches during SYN_DROPPED in the first frame

The previous event processing had subtle issues with touches stopping during
SYN_DROPPED. All of the device state was processed in the same frame, but if
any touch changed tracking ID during SYN_DROPPED, an inserted SYN_REPORT
resulted in a weird split of events:
- the first frame had all key/sw/abs updates including those slots that
  changed tracking ID, but not the ones that were fully terminated.
- the second frame had only the slots states for newly started touches **and**
  the slot state for touches terminated during SYN_DROPPED but not restarted.

In other words, where three fingers were on the touchpad and slot 0 was lifted
and put down again and slot 1 was lifted but *not* put down again, our frames
contained:
- frame 1: terminate slot 0, BTN_TOOL_TRIPLETAP 0, BTN_TOOL_DOUBLETAP 1
- frame 2: start slot 0, terminate slot 1

Where there was no touch changing tracking ID, only one frame was generated.
The BTN_TOOL updates were buggy, they may not match the number of fingers down
as seen on a frame-by-frame basis. This triggered libinput bug
https://gitlab.freedesktop.org/libinput/libinput/issues/422

This patch changes the above example to
- frame 1: terminate slot 0, terminate slot 1
- frame 2: start slot 0, BTN_TOOL_TRIPLETAP 0, BTN_TOOL_DOUBLETAP 1

Notably, the first frame no longer contains the BTN_TOOL bits. This patch is
one of two, the BTN_TOOL sync bits are part of a follow-up patch.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
4 years agoInvert an if condition
Peter Hutterer [Thu, 13 Feb 2020 11:09:24 +0000 (21:09 +1000)]
Invert an if condition

Go from:
  if (a != b)
     continue;
  foo;

to:
  if (a == b) {
      foo;
  }

Basically just an indentation change after the condition inversion, makes the
follow-up patch easier to review.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
4 years agoPush terminating the slots into a helper function
Peter Hutterer [Thu, 13 Feb 2020 10:39:41 +0000 (20:39 +1000)]
Push terminating the slots into a helper function

No functional changes.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
4 years agoSplit the MT state syncing and event generation into two functions
Peter Hutterer [Thu, 13 Feb 2020 08:14:50 +0000 (18:14 +1000)]
Split the MT state syncing and event generation into two functions

In the near future, we will need to handle slot termination *before* any other
state synchronization. So let's start splitting things up.

This is functionally equivalent though dropping the need_tracking_id_changes
variable means we run through all slots now to check if we need to terminate
one of them. Given the normal number of slots on a device and that this should
only ever run very rarely anyway... meh.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
4 years agoExpand the touch state handling during SYN_DROPPED
Peter Hutterer [Thu, 13 Feb 2020 06:50:17 +0000 (16:50 +1000)]
Expand the touch state handling during SYN_DROPPED

Keep a better state of each touch before/after the SYN_DROPPED. Most of this
is currently unused, it's functionally the same as before but the new code
serves to increase readability and it can be passed around easier this way.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
4 years agoMake the code for handling before/after SYN_DROPPED slot values more readable
Peter Hutterer [Thu, 13 Feb 2020 06:39:20 +0000 (16:39 +1000)]
Make the code for handling before/after SYN_DROPPED slot values more readable

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
4 years agogitlab CI: hook up qemu
Peter Hutterer [Tue, 18 Feb 2020 10:22:12 +0000 (20:22 +1000)]
gitlab CI: hook up qemu

This is mostly copied from libinput's qemu setup with a few minor renames.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
4 years agogitlab CI: replace the hardcoded meson builddir with a variable
Peter Hutterer [Tue, 18 Feb 2020 10:31:32 +0000 (20:31 +1000)]
gitlab CI: replace the hardcoded meson builddir with a variable

Bonus: we test for spaces in the directory name now too

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
4 years agomeson.build: hook up the static symbols leak test
Peter Hutterer [Tue, 18 Feb 2020 09:31:43 +0000 (19:31 +1000)]
meson.build: hook up the static symbols leak test

And because bash on F31 is leaking, we need an extra valgrind suppression.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
4 years agotest: change the static symbol leak test to a shell script
Peter Hutterer [Tue, 18 Feb 2020 09:21:47 +0000 (19:21 +1000)]
test: change the static symbol leak test to a shell script

Easier to call from meson this way

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
4 years agotest: always ship with the helper files
Peter Hutterer [Tue, 18 Feb 2020 09:39:01 +0000 (19:39 +1000)]
test: always ship with the helper files

The tarball shouldn't be dependent on whatever options were passed to
configure.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
4 years agomeson.build: fix some whitespace, put reminder comment in
Peter Hutterer [Tue, 18 Feb 2020 09:17:50 +0000 (19:17 +1000)]
meson.build: fix some whitespace, put reminder comment in

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
4 years agogitlab CI: add a job to make sure the soname is correct for both build systems
Peter Hutterer [Tue, 18 Feb 2020 09:00:44 +0000 (19:00 +1000)]
gitlab CI: add a job to make sure the soname is correct for both build systems

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
4 years agogitlab CI: rename the custom build jobs
Peter Hutterer [Tue, 18 Feb 2020 08:47:07 +0000 (18:47 +1000)]
gitlab CI: rename the custom build jobs

We don't really care that they're F31, that's an implementation detail. So
let's rename them so we can easily pick which job is which on the pipeline
overview.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
4 years agogitlab CI: run the test suite through valgrind
Peter Hutterer [Mon, 17 Feb 2020 09:24:29 +0000 (19:24 +1000)]
gitlab CI: run the test suite through valgrind

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
4 years agogitlab CI: add targets to build from each others tarballs
Peter Hutterer [Mon, 17 Feb 2020 07:08:48 +0000 (17:08 +1000)]
gitlab CI: add targets to build from each others tarballs

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
4 years agogitlab CI: add more targets for custom meson builds
Peter Hutterer [Mon, 17 Feb 2020 06:58:22 +0000 (16:58 +1000)]
gitlab CI: add more targets for custom meson builds

Notable: the meson builds don't have a "nm is missing" target because meson
needs it for itself.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
4 years agogitlab CI: rename few targets for autotools
Peter Hutterer [Mon, 17 Feb 2020 06:54:52 +0000 (16:54 +1000)]
gitlab CI: rename few targets for autotools

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
4 years agomeson/configure: put a comment in that we don't want to bump the soname
Peter Hutterer [Mon, 17 Feb 2020 06:49:35 +0000 (16:49 +1000)]
meson/configure: put a comment in that we don't want to bump the soname

We use symbol versioning anyway, so we don't need to bump the soname every
time.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
4 years agogitlab CI: hook up the meson build
Peter Hutterer [Fri, 14 Feb 2020 02:06:46 +0000 (12:06 +1000)]
gitlab CI: hook up the meson build

Centos doesn't run meson because it's too hard to install the package with dnf
and I can't be bothered going through pip.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
4 years agoAdd support for the meson build system
Peter Hutterer [Mon, 26 Aug 2019 06:50:34 +0000 (16:50 +1000)]
Add support for the meson build system

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
4 years agotools: fix the include path for local includes
Peter Hutterer [Mon, 17 Feb 2020 07:40:57 +0000 (17:40 +1000)]
tools: fix the include path for local includes

Make sure we use the local include files, and correct the path accordingly.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
4 years agogitlab CI: rename the default build jobs to autotools
Peter Hutterer [Mon, 17 Feb 2020 04:43:15 +0000 (14:43 +1000)]
gitlab CI: rename the default build jobs to autotools

Prep the path for adding meson

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
4 years agoAuto-generate the gitlab CI script
Peter Hutterer [Fri, 14 Feb 2020 04:40:12 +0000 (14:40 +1000)]
Auto-generate the gitlab CI script

There is so much duplication between the various jobs that it's hard to keep
track of it manually. Let's employ a python script to generate those bits,
reducing the actual gitlab-ci.yml to the hand-written parts only.

The new script takes the .gitlab-ci/gitlab-ci.yml.in and simply appends the
generated parts to it. Most of it is straightforward, only centos needs some
custom parts because of missing doxygen.

The diff is a bit hard to review, thanks to the python script we now group
based on distribution, not based on name (i.e. all fedoras in one group
instead of all container-preps in one group).
And since we're generating anyway, some of the in-between stages were removed
(e.g. $DISTRO-build@template).

A new CI job is added to run a diff against the .gitlab-ci.yml that's checked
in and the one generated by this script. If they differ, we fail.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
4 years agogitlab CI: move a few sections around
Peter Hutterer [Mon, 17 Feb 2020 00:53:32 +0000 (10:53 +1000)]
gitlab CI: move a few sections around

Move the centos builds to after the ubuntu builds and swap the two fedora
builds. Just we have the same order for things here as in the container
prep/clean phases and to make a future patch easier to review.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
4 years agogitlab CI: visually align the container images
Peter Hutterer [Mon, 17 Feb 2020 00:49:20 +0000 (10:49 +1000)]
gitlab CI: visually align the container images

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
4 years agoCompress an if statement
Peter Hutterer [Wed, 12 Feb 2020 22:28:59 +0000 (08:28 +1000)]
Compress an if statement

No functional changes, just making the code slightly more compressed

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
4 years agoLocalize two variables
Peter Hutterer [Wed, 12 Feb 2020 22:28:32 +0000 (08:28 +1000)]
Localize two variables

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
4 years agoUncomplicate the setting of axis during slot sync
Peter Hutterer [Wed, 12 Feb 2020 12:17:13 +0000 (22:17 +1000)]
Uncomplicate the setting of axis during slot sync

A few bytes get wasted, but no magic handling of offsets etc are required.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
4 years agoPush the tracking id change bits on the stack
Peter Hutterer [Wed, 12 Feb 2020 12:10:59 +0000 (22:10 +1000)]
Push the tracking id change bits on the stack

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
4 years agoPush the slot_update bits on the stack
Peter Hutterer [Wed, 12 Feb 2020 12:09:36 +0000 (22:09 +1000)]
Push the slot_update bits on the stack

Much simpler code this way

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
4 years agoDrop the mt_sync_state in our device struct
Peter Hutterer [Wed, 12 Feb 2020 12:05:33 +0000 (22:05 +1000)]
Drop the mt_sync_state in our device struct

Replace it with a stack-allocated one. This saves us a bunch of confusing
allocations and size calculations.

And in the process use uint32_t/int32_t to ensure the struct is actually the
expected size.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
4 years agogitlab CI: align the image tags a bit nicer
Peter Hutterer [Fri, 14 Feb 2020 04:41:32 +0000 (14:41 +1000)]
gitlab CI: align the image tags a bit nicer

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
4 years agogitlab CI: rename the default_build to autotools_build
Peter Hutterer [Fri, 14 Feb 2020 02:20:55 +0000 (12:20 +1000)]
gitlab CI: rename the default_build to autotools_build

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
4 years agoflake8 fixes for make-event-names.py
Peter Hutterer [Fri, 14 Feb 2020 02:49:27 +0000 (12:49 +1000)]
flake8 fixes for make-event-names.py

Mostly whitespace changes, two semicolon removals and one change to "foo is
None".

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
4 years agoChange the python script to generate event names to Python3
Peter Hutterer [Fri, 14 Feb 2020 02:46:56 +0000 (12:46 +1000)]
Change the python script to generate event names to Python3

It's well past time. If you need this to run on python2, patch it out locally.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
4 years agotest: silence warnings about missing field initializers
Peter Hutterer [Fri, 14 Feb 2020 00:38:32 +0000 (10:38 +1000)]
test: silence warnings about missing field initializers

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
4 years agotest: fix two signed vs unsigned warnings
Peter Hutterer [Fri, 14 Feb 2020 00:28:24 +0000 (10:28 +1000)]
test: fix two signed vs unsigned warnings

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
4 years agouinput: drop an unused function argument
Peter Hutterer [Fri, 14 Feb 2020 00:20:07 +0000 (10:20 +1000)]
uinput: drop an unused function argument

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
4 years agotools: drop explicit GNU_SOURCE define
Peter Hutterer [Fri, 14 Feb 2020 00:13:52 +0000 (10:13 +1000)]
tools: drop explicit GNU_SOURCE define

It's defined globally through AC_USE_SYSTEM_EXTENSIONS

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
4 years agoconfig.h is a local include path
Peter Hutterer [Fri, 14 Feb 2020 00:13:18 +0000 (10:13 +1000)]
config.h is a local include path

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
4 years agotools: drop use of HAVE_CONFIG_H
Peter Hutterer [Fri, 14 Feb 2020 00:11:32 +0000 (10:11 +1000)]
tools: drop use of HAVE_CONFIG_H

There's no case where we don't have a config.h

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
4 years agogitlab CI: separate builddir from srcdir
Peter Hutterer [Fri, 14 Feb 2020 01:43:19 +0000 (11:43 +1000)]
gitlab CI: separate builddir from srcdir

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
4 years agogitlab CI: use extends over yaml anchors
Peter Hutterer [Thu, 13 Feb 2020 22:40:16 +0000 (08:40 +1000)]
gitlab CI: use extends over yaml anchors

This also gets rid of some superfluous inclusions - all those are inherited
now anyway.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
4 years agogitlab CI: remove a reference to libinput
Peter Hutterer [Thu, 13 Feb 2020 22:38:32 +0000 (08:38 +1000)]
gitlab CI: remove a reference to libinput

That's what you get for copy/paste...

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
4 years agogitlab CI: add a check-commit stage
Peter Hutterer [Thu, 13 Feb 2020 22:20:27 +0000 (08:20 +1000)]
gitlab CI: add a check-commit stage

Taken from libinput, checks for signed-off-by and other things.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
4 years agoconfigure.ac: add a toggle to enable the special coverity options
Peter Hutterer [Wed, 12 Feb 2020 22:06:33 +0000 (08:06 +1000)]
configure.ac: add a toggle to enable the special coverity options

Coverity tries to supply system headers and fails badly at it. A bunch of
_Float... sizes are pulled in by math.h but not provided anywhere. So as a
workaround, let's add an option to explicitly enable coverity support that
simply #defines those types to ones we do know about and let's go on hoping
it'll eventually work.

See the equivalent addition to libinput in commit 8178339b5baa717.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
4 years agoAdd queue_push_event as shortcut for the two-liner we use everywhere
Peter Hutterer [Tue, 11 Feb 2020 03:51:17 +0000 (13:51 +1000)]
Add queue_push_event as shortcut for the two-liner we use everywhere

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
4 years agoSimplify some error handling by assuming a >=3.4 kernel
Peter Hutterer [Tue, 11 Feb 2020 03:23:44 +0000 (13:23 +1000)]
Simplify some error handling by assuming a >=3.4 kernel

v3.4 was released in 2012, every kernel since has that ioctl. So instead of
assuming you're running new libevdev on an 8 year old kernel, let's assume
that any error from the ioctl() is an actual error and handle it accordingly.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
4 years agotest: slightly modernize some of the tests
Peter Hutterer [Tue, 11 Feb 2020 09:46:59 +0000 (19:46 +1000)]
test: slightly modernize some of the tests

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
4 years agotest: provide a function to print an event
Peter Hutterer [Tue, 11 Feb 2020 10:44:25 +0000 (20:44 +1000)]
test: provide a function to print an event

Easy to copy/paste into a test that needs a bit of debugging, otherwise unused.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
4 years agotest: split the tests into one test case each
Peter Hutterer [Tue, 11 Feb 2020 10:37:01 +0000 (20:37 +1000)]
test: split the tests into one test case each

For debugging it's more important to be able to quickly run a single test
rather than grouping them together, we don't have thousands of tests here
anyway. So let's add a macro to put every test func into its own TCase,
allowing for test selection via the environment variable CK_RUN_CASE.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
4 years agotest: wrap the event checks into a macro
Peter Hutterer [Mon, 10 Feb 2020 09:10:05 +0000 (19:10 +1000)]
test: wrap the event checks into a macro

One-liner to check an event rather than three separate statements in every
test.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
4 years agodoc: add markdown for monospace rendering of defines
Peter Hutterer [Mon, 10 Feb 2020 09:46:07 +0000 (19:46 +1000)]
doc: add markdown for monospace rendering of defines

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
4 years agoOnly use GCC pragma on GCC
Michael Forney [Mon, 17 Jun 2019 00:18:00 +0000 (17:18 -0700)]
Only use GCC pragma on GCC

Signed-off-by: Michael Forney <mforney@mforney.org>
4 years agoAvoid initializer index range
Michael Forney [Mon, 17 Jun 2019 00:14:18 +0000 (17:14 -0700)]
Avoid initializer index range

This is a GNU C extension, and is not available in ISO C.

Instead, just explicitly initialize other indices to -1.

Signed-off-by: Michael Forney <mforney@mforney.org>
4 years agoAdd fallback min/max for compilers that don't have statement expressions
Michael Forney [Mon, 17 Jun 2019 00:05:30 +0000 (17:05 -0700)]
Add fallback min/max for compilers that don't have statement expressions

Statement expressions are a GNU C extension and are not available
in ISO C.

On compilers that don't have them, define these macros as plain
conditional expressions, since they are only ever used with expressions
that have no side-effects.

The statement-expression version is still retained as an added
safety measure on GNU-compatible compilers.

Signed-off-by: Michael Forney <mforney@mforney.org>
4 years agotest: add mangle_path to the excluded symbols leak list
Peter Hutterer [Thu, 6 Feb 2020 00:36:17 +0000 (10:36 +1000)]
test: add mangle_path to the excluded symbols leak list

Don't 100% know where it comes from but it's not ours, so...

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
4 years agogitlab CI: some more centos deduplication
Peter Hutterer [Thu, 6 Feb 2020 00:23:45 +0000 (10:23 +1000)]
gitlab CI: some more centos deduplication

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
4 years agogitlab CI: don't run distcheck on centos 7 anymore
Peter Hutterer [Thu, 6 Feb 2020 00:22:48 +0000 (10:22 +1000)]
gitlab CI: don't run distcheck on centos 7 anymore

With b65be7aa79 the centos 7 RPMs don't include doxygen anymore, so let's drop
the distcheck job. Centos 7 is old enough at this point that we don't need to
care too much.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
4 years agogitlab CI: force a rebuild of all the docker containers
Peter Hutterer [Mon, 3 Feb 2020 10:38:26 +0000 (20:38 +1000)]
gitlab CI: force a rebuild of all the docker containers

To make sure the current pipeline is correct

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
4 years agogitlab CI: switch the custom builds to Fedora 31
Peter Hutterer [Mon, 3 Feb 2020 10:35:44 +0000 (20:35 +1000)]
gitlab CI: switch the custom builds to Fedora 31

With b65be7aa79 the centos 7 RPMs don't include doxygen anymore, causing a CI
pipeline failure (but only where the centos image is being rebuilt).

Fedora is a better early-warning system about possible breakages than Centos -
which was originally chosen precisely because it doesn't update much and was
faster to run in the CI (this was before custom docker images).

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
4 years agotest: replace the SW_LID tests with SW_HEADPHONE_INSERT
Peter Hutterer [Mon, 18 Nov 2019 03:42:40 +0000 (13:42 +1000)]
test: replace the SW_LID tests with SW_HEADPHONE_INSERT

We're only testing EV_SW event delivery here and SW_LID has the tendency to
suspend the host when we don't specifically inhibit it. So let's just swap for
the next one.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
4 years agoCI: add a Centos 8 container build
Peter Hutterer [Thu, 24 Oct 2019 23:50:48 +0000 (09:50 +1000)]
CI: add a Centos 8 container build

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
4 years agoCI: deduplicate distcheck by making it a variable
Peter Hutterer [Fri, 15 Nov 2019 04:40:08 +0000 (14:40 +1000)]
CI: deduplicate distcheck by making it a variable

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
4 years agoCI: move the configure flags into a variable
Peter Hutterer [Fri, 15 Nov 2019 04:32:07 +0000 (14:32 +1000)]
CI: move the configure flags into a variable

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
4 years agoCI: extend the CI to work with containers
Peter Hutterer [Fri, 25 Oct 2019 00:17:46 +0000 (00:17 +0000)]
CI: extend the CI to work with containers

Mostly copy/paste from libinput but we do build on debian and centos as well.
The special builds are basically the same as before.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
4 years agomake-event-names.py should take the files as argument
Peter Hutterer [Wed, 23 Oct 2019 03:13:50 +0000 (03:13 +0000)]
make-event-names.py should take the files as argument

Don't rely on cat, just let our script read everything as required.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
4 years agodoc: Fix function names in simple code example
Alexander Dahl [Thu, 12 Sep 2019 13:43:11 +0000 (15:43 +0200)]
doc: Fix function names in simple code example

That code did not compile because those functions were only renamed in
header and code back then, but not in the example.

Fixes: ab2f20bfd6ad ("Revamp the API once again")
Signed-off-by: Alexander Dahl <ada@thorsis.com>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
4 years agolibevdev 1.8.0 upstream_work_20200211 upstream_work_20210106 libevdev-1.8.0
Peter Hutterer [Mon, 26 Aug 2019 04:35:54 +0000 (14:35 +1000)]
libevdev 1.8.0

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
4 years agoinclude: sync event codes with kernel 5.2
Peter Hutterer [Mon, 26 Aug 2019 04:33:19 +0000 (14:33 +1000)]
include: sync event codes with kernel 5.2

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
4 years agodoc: add a note regarding truncation of id_* fields
Nayan Deshmukh [Sun, 4 Aug 2019 11:58:56 +0000 (20:58 +0900)]
doc: add a note regarding truncation of id_* fields

The id_* fields are 16 bits in linux/input.h and we mirror
the kernel API here. Even though we accept an int for this
fields in ABI the value is truncated at 16 bits.

Signed-off-by: Nayan Deshmukh <nayan26deshmukh@gmail.com>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
4 years agoInitialize the slots correctly when enabling ABS_MT_SLOT
Peter Hutterer [Fri, 14 Jun 2019 01:18:37 +0000 (11:18 +1000)]
Initialize the slots correctly when enabling ABS_MT_SLOT

Previously, enabling or disabling ABS_MT_SLOT would not change the actual
slots, it was treated as a normal bitflag. This means we couldn't initialize a
libevdev context from scratch and have it behave like a correct MT context.

Fixes #4

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
4 years agodoc: fix a typo
Peter Hutterer [Tue, 11 Jun 2019 22:16:12 +0000 (08:16 +1000)]
doc: fix a typo

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agolibevdev 1.7.0 libevdev-1.7.0
Peter Hutterer [Wed, 5 Jun 2019 01:36:08 +0000 (11:36 +1000)]
libevdev 1.7.0

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agodoc: fix distcheck
Peter Hutterer [Wed, 5 Jun 2019 01:15:12 +0000 (11:15 +1000)]
doc: fix distcheck

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agodoc: minor documentation updates
Peter Hutterer [Wed, 5 Jun 2019 00:52:01 +0000 (10:52 +1000)]
doc: minor documentation updates

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agodoc: add libinput's doxygen styles
Peter Hutterer [Wed, 5 Jun 2019 00:36:24 +0000 (10:36 +1000)]
doc: add libinput's doxygen styles

Minor modifications to the style, but at least this is readable now.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agodoc: drop the custom stylesheet
Peter Hutterer [Mon, 3 Jun 2019 07:40:06 +0000 (17:40 +1000)]
doc: drop the custom stylesheet

Revert back to the normal doxygen looks, even though they're pretty awful. But
at least they're consistent, the custom stylesheets had all sorts of weird
corner cases that didnt' render correctly and I don't have enough CSS
knowledge to fix this correctly.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agodoc: a change of the CSS needs to trigger a doxygen rebuild
Peter Hutterer [Mon, 3 Jun 2019 07:37:30 +0000 (17:37 +1000)]
doc: a change of the CSS needs to trigger a doxygen rebuild

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agodoc: change @retval documentation to help doxygen with rendering
Peter Hutterer [Mon, 3 Jun 2019 07:01:52 +0000 (17:01 +1000)]
doc: change @retval documentation to help doxygen with rendering

This causes some weird rendering, let's split it into a list (which also
happens to be more readable).

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agodoc: fix some doxygen layout
Peter Hutterer [Mon, 3 Jun 2019 06:50:31 +0000 (16:50 +1000)]
doc: fix some doxygen layout

The linewrapped 1 caused doxygen to start a list

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agodoc: fix some doxygen warnings
Peter Hutterer [Mon, 3 Jun 2019 06:38:09 +0000 (16:38 +1000)]
doc: fix some doxygen warnings

warning: explicit link request to 'defines' could not be resolved

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agolibevdev 1.7rc1 libevdev-1.6.901
Peter Hutterer [Fri, 24 May 2019 00:54:14 +0000 (10:54 +1000)]
libevdev 1.7rc1

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agoinclude: sync event codes with kernel 5.1
Peter Hutterer [Tue, 7 May 2019 00:30:40 +0000 (10:30 +1000)]
include: sync event codes with kernel 5.1

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agoAdd a code-based name lookup function
Peter Hutterer [Tue, 19 Mar 2019 01:44:33 +0000 (11:44 +1000)]
Add a code-based name lookup function

Two new function pairs:
libevdev_event_code_from_code_name()
libevdev_event_type_from_code_name()

libevdev_event_code_from_code_name_n()
libevdev_event_type_from_code_name_n()

These functions look up event codes/types by the name of the event code only,
removing the need to figure out what event type an event code has. So if all
you have is "BTN_TOUCH", you can now look up the type and code for that,
without having to check the prefix yourself to guess at the type.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agoDon't read events unless required
Peter Hutterer [Wed, 16 Jan 2019 03:55:25 +0000 (13:55 +1000)]
Don't read events unless required

With the previous approach, every libevdev_next_event() invocation triggered a
read() on the device fd. This is not efficient, the kernel provides whole
event frames at a time so we're guaranteed to have more events waiting unless
the current event is a SYN_REPORT.

Assuming a fast-enough client and e.g. a touchpad device with multiple axes
per frame, we'd thus trigger several unnecessary read() calls per event frame.

Drop this behavior, instead only trigger the read when our internal queue is
empty and we need more events.

Fallout:
- we don't have any warning about a too-slow sync, i.e. if a SYN_DROPPED
  arrives while we're syncing, we don't get a warning in the log anymore.
  the test for this was removed.
- the tests that required the specific behavior were rewritten accordingly
- a revoke on a kernel device doesn't return ENODEV until already-received
  events have been processed

The above shouldn't be an issue for existing real-world clients.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agoinclude: sync event codes with kernel 5.0
Peter Hutterer [Wed, 6 Mar 2019 00:56:28 +0000 (10:56 +1000)]
include: sync event codes with kernel 5.0

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agoReplace ABS_MT_SLOT - 1 with the v4.20 ABS_RESERVED define
Peter Hutterer [Wed, 16 Jan 2019 03:17:33 +0000 (13:17 +1000)]
Replace ABS_MT_SLOT - 1 with the v4.20 ABS_RESERVED define

ABS_RESERVED was added to 4.20 for that reason, to keep that event code
reserved so we can't use it for anything else (and thus mess up the fake MT
detection).

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agoinclude: sync event codes with kernel 4.20
Peter Hutterer [Wed, 16 Jan 2019 03:15:05 +0000 (13:15 +1000)]
include: sync event codes with kernel 4.20

5 years agolibevdev 1.6.0 libevdev-1.6.0
Peter Hutterer [Thu, 25 Oct 2018 23:50:23 +0000 (09:50 +1000)]
libevdev 1.6.0

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agoinclude: sync event codes with kernel 4.19
Peter Hutterer [Mon, 22 Oct 2018 08:49:33 +0000 (18:49 +1000)]
include: sync event codes with kernel 4.19

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agoAdd libevdev_event_value_get_name() to resolve ABS_MT_TOOL_TYPE values
Peter Hutterer [Fri, 15 Jun 2018 03:51:43 +0000 (13:51 +1000)]
Add libevdev_event_value_get_name() to resolve ABS_MT_TOOL_TYPE values

ABS_MT_TOOL_TYPE values are an enum, not a numerical value like all other
axes. So let's allow converting those values to string.

Fixes https://gitlab.freedesktop.org/libevdev/libevdev/issues/1

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Benjamin Tissoires <benjamin.tissoires@gmail.com>
5 years agoResolve the names "SW_MAX" and friends
Peter Hutterer [Mon, 18 Jun 2018 04:18:07 +0000 (14:18 +1000)]
Resolve the names "SW_MAX" and friends

Some of the *_MAX names are duplicates and have a real define. These were not
resolved until now.

Fixes https://gitlab.freedesktop.org/libevdev/libevdev/issues/3

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Benjamin Tissoires <benjamin.tissoires@gmail.com>
5 years agomake-event-names: minor cleanups for readability
Peter Hutterer [Mon, 18 Jun 2018 04:45:07 +0000 (14:45 +1000)]
make-event-names: minor cleanups for readability

Two variable renames for less ambiguity
Two changes from an long if condition to a "if foo in [...]"

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Benjamin Tissoires <benjamin.tissoires@gmail.com>
5 years agotest: add a test timeout multiplier for valgrind
Peter Hutterer [Mon, 9 Jul 2018 01:48:21 +0000 (11:48 +1000)]
test: add a test timeout multiplier for valgrind

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agoGitLab CI: actually reference the default artifacts
Peter Hutterer [Mon, 9 Jul 2018 01:13:03 +0000 (11:13 +1000)]
GitLab CI: actually reference the default artifacts

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agoGitLab CI: build with the various options
Peter Hutterer [Fri, 29 Jun 2018 01:23:36 +0000 (11:23 +1000)]
GitLab CI: build with the various options

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>