| 4174302b | 24-Aug-2021 |
Vladimir Kondratyev <[email protected]> |
evdev: Add implicit mode for touch tracking.
In implicit mode assignment of slot number and tracking id is performed automatically on each synchronization requested by device driver.
This is done w
evdev: Add implicit mode for touch tracking.
In implicit mode assignment of slot number and tracking id is performed automatically on each synchronization requested by device driver.
This is done with creation of intermediate buffer for multitouch events. This buffer holds untracked events until synchronization is requested by device driver. It is needed as touch assigment requires knowledges of all touch positions pushed in current and previous reports.
(cherry picked from commit f76051c7dabe952b75127a8031d87d78b603be20)
show more ...
|
| b79de251 | 24-Aug-2021 |
Vladimir Kondratyev <[email protected]> |
evdev: Import support for touch-tracking.
Touch tracking is a process of assignment of unique trackingID to each initiated contact on the surface. Keeping the trackingIDs persistent across multitou
evdev: Import support for touch-tracking.
Touch tracking is a process of assignment of unique trackingID to each initiated contact on the surface. Keeping the trackingIDs persistent across multitouch reports requires solving of so called Euclidian Bipartite Matching problem.
This commit imports EBM-solver implementation based on Dinitz-Kronrod algorithm to find minimum cost matching between contacts listed in two consecutive reports.
Obtained from: OpenBSD
(cherry picked from commit 4c0a134e32a7f4dec556fea15c8de22f69864492)
show more ...
|
| 759a5cd1 | 24-Aug-2021 |
Vladimir Kondratyev <[email protected]> |
evdev: Give short aliases to items of evdev_mt_slot array
with using of unioned anonymous structure.
Access to the same data by using different members of union generally works despite it is not su
evdev: Give short aliases to items of evdev_mt_slot array
with using of unioned anonymous structure.
Access to the same data by using different members of union generally works despite it is not supported by C specs.
Also add helper function to report entire slot state.
(cherry picked from commit 059360287e3344f48f5a7839e2d6d54016b18b19)
show more ...
|
| de20578e | 24-Aug-2021 |
Vladimir Kondratyev <[email protected]> |
evdev: force no fuzz for autogenerated single touch compat events.
As fuzz has already been applied on multitouch event processing. This allows to remove existing workaround for double fuzz procesin
evdev: force no fuzz for autogenerated single touch compat events.
As fuzz has already been applied on multitouch event processing. This allows to remove existing workaround for double fuzz procesing.
(cherry picked from commit 314913ed7c6e6e1b7c80a1063620f478961419b7)
show more ...
|
| 3b8c8b35 | 21-Apr-2020 |
Vladimir Kondratyev <[email protected]> |
evdev: Allow open() handler to be interrupted by a signal
It is possible that the client list lock is taken by other process for too long due to e.g. IO timeouts. Allow user to terminate open() in t
evdev: Allow open() handler to be interrupted by a signal
It is possible that the client list lock is taken by other process for too long due to e.g. IO timeouts. Allow user to terminate open() in this case.
Reviewed by: markj (as part of D27865)
show more ...
|
| d276eae6 | 21-Apr-2020 |
Vladimir Kondratyev <[email protected]> |
evdev: Make open(2) and close(3) handlers sleepable.
At the beginning of evdev there was a LOR between hardware driver's and evdev client list locks as they were taken in different order at driver's
evdev: Make open(2) and close(3) handlers sleepable.
At the beginning of evdev there was a LOR between hardware driver's and evdev client list locks as they were taken in different order at driver's interrupt and evdev open()/close() handlers.
The LOR was fixed with introduction of evdev_register_mtx() function which allowed to use a hardware driver's lock as evdev client list lock. While this works good with PS/2 and USB, this does not work with I2C. Unlike PS/2 and USB, I2C open()/close() handlers do unbound sleeps while waiting for I2C bus to release and while performing IO. This change uses epoch(9) for traversing evdev client list in interrupt handler to avoid the LOR thus making possible to convert evdev client list lock to sleepable sx.
While here add brief locking protocol description.
Reviewed by: markj Differential revision: https://reviews.freebsd.org/D27865
show more ...
|