summaryrefslogtreecommitdiffstats
path: root/meta-agl/recipes-graphics/wayland/weston/0001-Adapt-changes-made-in-libinput-src-evdev.c-for-touch.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-agl/recipes-graphics/wayland/weston/0001-Adapt-changes-made-in-libinput-src-evdev.c-for-touch.patch')
-rw-r--r--meta-agl/recipes-graphics/wayland/weston/0001-Adapt-changes-made-in-libinput-src-evdev.c-for-touch.patch65
1 files changed, 65 insertions, 0 deletions
diff --git a/meta-agl/recipes-graphics/wayland/weston/0001-Adapt-changes-made-in-libinput-src-evdev.c-for-touch.patch b/meta-agl/recipes-graphics/wayland/weston/0001-Adapt-changes-made-in-libinput-src-evdev.c-for-touch.patch
new file mode 100644
index 000000000..1bb9253d4
--- /dev/null
+++ b/meta-agl/recipes-graphics/wayland/weston/0001-Adapt-changes-made-in-libinput-src-evdev.c-for-touch.patch
@@ -0,0 +1,65 @@
+From c4633014fff25d32926129a8b028124c6338bb2b Mon Sep 17 00:00:00 2001
+From: Louai Al-Khanji <louai.al-khanji@theqtcompany.com>
+Date: Wed, 19 Aug 2015 09:04:46 +0300
+Subject: [PATCH 1/1] Adapt changes made in libinput/src/evdev.c for touch
+ frame emission.
+
+---
+ src/evdev.c | 27 +++++++++++++++++++++++++++
+ 1 file changed, 27 insertions(+)
+
+diff --git a/src/evdev.c b/src/evdev.c
+index 888dfbd..daa5d72 100644
+--- a/src/evdev.c
++++ b/src/evdev.c
+@@ -359,12 +359,36 @@ evdev_process_absolute(struct evdev_device *device,
+ }
+ }
+
++static inline int
++evdev_need_touch_frame(struct evdev_device *device)
++{
++ if (!(device->seat_caps & EVDEV_SEAT_TOUCH))
++ return 0;
++
++ switch (device->pending_event) {
++ case EVDEV_NONE:
++ case EVDEV_RELATIVE_MOTION:
++ break;
++ case EVDEV_ABSOLUTE_MT_DOWN:
++ case EVDEV_ABSOLUTE_MT_MOTION:
++ case EVDEV_ABSOLUTE_MT_UP:
++ case EVDEV_ABSOLUTE_TOUCH_DOWN:
++ case EVDEV_ABSOLUTE_TOUCH_UP:
++ case EVDEV_ABSOLUTE_MOTION:
++ return 1;
++ }
++
++ return 0;
++}
++
+ static void
+ fallback_process(struct evdev_dispatch *dispatch,
+ struct evdev_device *device,
+ struct input_event *event,
+ uint32_t time)
+ {
++ int need_frame = 0;
++
+ switch (event->type) {
+ case EV_REL:
+ evdev_process_relative(device, event, time);
+@@ -376,7 +400,10 @@ fallback_process(struct evdev_dispatch *dispatch,
+ evdev_process_key(device, event, time);
+ break;
+ case EV_SYN:
++ need_frame = evdev_need_touch_frame(device);
+ evdev_flush_pending_event(device, time);
++ if (need_frame)
++ notify_touch_frame(device->seat);
+ break;
+ }
+ }
+--
+2.1.4
+