weston/libweston
Louis-Francis Ratté-Boulianne 83630983ad libweston: implement touch calibration protocol
This implements a new global interface weston_touch_calibration, which
allows one client at a time to perform touchscreen calibration. This
also implements the calibrator window management.

A client asks to calibrate a specific physical touch device (not a
wl_seat which may have several physical touch devices aggregated).
Libweston grabs all touch devices and prevents normal touch event
handling during the calibation sequence.

API is added to enable this new global interface, but it not yet called
by anything. Since the implementation allows clients to grab touch devices
arbitrarily, it is not enabled by default. The compositor should take
measures to prevent unexpected access to the interface.

A client may upload a new calibration to the compositor. There is a
vfunc to allow the compositor to reject/accept it and save it to
persistent storage. The persistent storage could be a udev rule
setting LIBINPUT_CALIBRATION_MATRIX, so that all display server would
load the new calibration automatically.

Co-developed by Louis-Francis and Pekka.

v2:
- use struct weston_point2d_device_normalized
- use syspath instead of devpath
- wrong_touch was renamed to invalid_touch
- rename weston_touch_calibrator::cancelled to calibration_cancelled
- send invalid_touch on out-of-bounds touch-down
- cancel touch sequence and send invalid_touch on motion going
  out-of-bounds
- rename calcoord_from_double() to wire_uint_from_double()
- send bad_coordinates error in touch_calibrator_convert()
- conversion results in 0,0 if cancelled

Signed-off-by: Louis-Francis Ratté-Boulianne <lfrb@collabora.com>
Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
v1 Tested-by: Matt Hoosier <matt.hoosier@gmail.com>
Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
2018-05-30 14:46:24 +03:00
..
animation.c build,libweston: Use struct timespec for animations 2017-11-27 11:41:17 +02:00
bindings.c libweston: Use struct timespec for touch down events 2017-11-27 11:42:07 +02:00
clipboard.c include stdint.h for int32_t/uint32_t 2016-07-26 16:26:08 -07:00
compositor-drm.c compositor-drm: expose global shadow flag for pixman 2018-05-24 17:20:04 +03:00
compositor-drm.h compositor-drm: expose global shadow flag for pixman 2018-05-24 17:20:04 +03:00
compositor-fbdev.c pixman: make shadow buffer optional 2018-05-24 17:20:04 +03:00
compositor-fbdev.h weston: Port fbdev backend to new output handling API 2016-10-03 14:24:08 +03:00
compositor-headless.c pixman: make shadow buffer optional 2018-05-24 17:20:04 +03:00
compositor-headless.h weston: Port headless backend to new output handling API 2016-10-03 14:24:08 +03:00
compositor-rdp.c rdp-compositor: fix compilation against FreeRDP 2.0.0 rc2 2018-05-28 14:47:07 +03:00
compositor-rdp.h weston: Port RDP backend to new output handling API 2016-10-03 14:24:08 +03:00
compositor-wayland.c libweston: notify_touch API to use weston_touch_device 2018-05-30 14:45:58 +03:00
compositor-wayland.h compositor-wayland: Convert fullscreen flag to bool 2016-10-14 10:42:17 +02:00
compositor-x11.c pixman: make shadow buffer optional 2018-05-24 17:20:04 +03:00
compositor-x11.h weston: Port X11 backend to new output handling API 2016-10-05 14:59:09 +03:00
compositor.c input: introduce touch event mode for calibrator 2018-05-30 14:46:14 +03:00
compositor.h libweston: implement touch calibration protocol 2018-05-30 14:46:24 +03:00
data-device.c libweston: Make weston_seat release safe 2018-02-15 13:14:14 +02:00
dbus.c include stdint.h for int32_t/uint32_t 2016-07-26 16:26:08 -07:00
dbus.h Rename src/ to libweston/ 2016-06-23 17:44:54 +03:00
gl-renderer.c gl-renderer: set num_images after import_simple_dmabuf 2018-03-28 13:09:50 +03:00
gl-renderer.h gl-renderer: Add <platform_attribs> param to gl_renderer_display_create 2016-11-07 17:06:44 +02:00
input.c libweston: implement touch calibration protocol 2018-05-30 14:46:24 +03:00
launcher-direct.c libweston: remove restore functionality 2018-02-09 15:16:07 +00:00
launcher-impl.h libweston: remove restore functionality 2018-02-09 15:16:07 +00:00
launcher-logind.c libweston: remove restore functionality 2018-02-09 15:16:07 +00:00
launcher-util.c libweston: remove restore functionality 2018-02-09 15:16:07 +00:00
launcher-util.h libweston: remove restore functionality 2018-02-09 15:16:07 +00:00
launcher-weston-launch.c libweston: remove restore functionality 2018-02-09 15:16:07 +00:00
libbacklight.c Switch to use safe_strtoint instead of strtol 2016-08-06 18:19:22 -07:00
libbacklight.h Rename src/ to libweston/ 2016-06-23 17:44:54 +03:00
libinput-device.c libweston: introduce notify_touch_normalized() and doc 2018-05-30 14:46:05 +03:00
libinput-device.h input: introduce weston_touch_device 2018-05-30 14:42:13 +03:00
libinput-seat.c libweston: require connected heads for input devices 2018-04-20 15:27:54 +03:00
libinput-seat.h libweston: require connected heads for input devices 2018-04-20 15:27:54 +03:00
libweston-uninstalled.pc.in buildsystem: add missing pkg-config stub for libweston uninstalled 2017-11-10 12:50:41 -06:00
libweston.pc.in libweston: fix major in libweston.pc 2016-08-02 14:19:11 +03:00
linux-dmabuf.c linux-dmabuf: send deprecated format events 2018-01-18 11:24:19 +00:00
linux-dmabuf.h linux-dmabuf: send deprecated format events 2018-01-18 11:24:19 +00:00
log.c log: improve handling of use-before-init 2018-05-28 16:38:05 +03:00
noop-renderer.c include stdint.h for int32_t/uint32_t 2016-07-26 16:26:08 -07:00
pixel-formats.c libweston: Add pixel-format helpers 2017-04-07 12:28:36 +03:00
pixel-formats.h libweston: Add pixel-format helpers 2017-04-07 12:28:36 +03:00
pixman-renderer.c pixman: make shadow buffer optional 2018-05-24 17:20:04 +03:00
pixman-renderer.h pixman: make shadow buffer optional 2018-05-24 17:20:04 +03:00
plugin-registry.c compositor: add plugin-registry 2016-07-01 14:10:26 +03:00
plugin-registry.h compositor: add plugin-registry 2016-07-01 14:10:26 +03:00
screenshooter.c libweston: Use struct timespec for the output presentation timestamp 2017-11-27 11:42:07 +02:00
spring-tool.c build,libweston: Use struct timespec for animations 2017-11-27 11:41:17 +02:00
timeline-object.h Rename src/ to libweston/ 2016-06-23 17:44:54 +03:00
timeline.c file-util: allow specifying path separately in file_create_dated() 2018-02-09 15:16:07 +00:00
timeline.h timeline: Add GPU timestamp timepoint argument 2017-09-29 10:20:42 +03:00
touch-calibration.c libweston: implement touch calibration protocol 2018-05-30 14:46:24 +03:00
vaapi-recorder.c Rename src/ to libweston/ 2016-06-23 17:44:54 +03:00
vaapi-recorder.h Rename src/ to libweston/ 2016-06-23 17:44:54 +03:00
version.h.in Rename src/ to libweston/ 2016-06-23 17:44:54 +03:00
vertex-clipping.c Rename src/ to libweston/ 2016-06-23 17:44:54 +03:00
vertex-clipping.h Rename src/ to libweston/ 2016-06-23 17:44:54 +03:00
weston-launch.c configure.ac: use AC_HEADER_MAJOR to detect major()/minor() 2017-12-04 19:38:14 +00:00
weston-launch.h Rename src/ to libweston/ 2016-06-23 17:44:54 +03:00
weston-sync-file.h libweston: Add check and fallback for linux/sync_file.h 2017-09-29 10:20:42 +03:00
windowed-output-api.h libweston: change windowed_output_api output_create to create_head 2018-04-17 15:19:57 +03:00
zoom.c libweston: Make weston_pointer destruction safe 2018-02-14 15:14:16 +02:00