summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRisto Avila <risto.avila@theqtcompany.com>2015-12-08 17:02:45 +0200
committerRisto Avila <risto.avila@theqtcompany.com>2015-12-08 17:02:45 +0200
commit2c29cda4ae86108ca711b0a36df555fd0d1f7bb9 (patch)
tree0ce3f5e054ad29419c156f44183115a985af8d22
parent6df1067fd87f68e67dad5cf5bd85acfea4a17abb (diff)
Add touch_frame events to Weston 1.5.0
Otherwise no Qt applications react on touch. This issue was eventually resolved upstream by dropping the built-in evdev backend and relying on libinput exclusively, where it is fixed. The libinput backend is required since Weston 1.7. In 1.6 the libinput backend was made the default, but the old backend was still there. Thus this fix also applies to Weston 1.6. Signed-off-by: Risto Avila <risto.avila@theqtcompany.com>
-rw-r--r--meta-agl/recipes-graphics/wayland/weston/0001-Adapt-changes-made-in-libinput-src-evdev.c-for-touch.patch65
-rw-r--r--meta-agl/recipes-graphics/wayland/weston_1.5.0.bbappend1
2 files changed, 66 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
+
diff --git a/meta-agl/recipes-graphics/wayland/weston_1.5.0.bbappend b/meta-agl/recipes-graphics/wayland/weston_1.5.0.bbappend
index cb8d11ed9..c982ed5de 100644
--- a/meta-agl/recipes-graphics/wayland/weston_1.5.0.bbappend
+++ b/meta-agl/recipes-graphics/wayland/weston_1.5.0.bbappend
@@ -2,6 +2,7 @@ FILESEXTRAPATHS_append := ":${THISDIR}/${PN}"
SRC_URI_append = "\
file://0001-desktop-shell-add-option-to-avoid-creating-the-panel.patch \
+ file://0001-Adapt-changes-made-in-libinput-src-evdev.c-for-touch.patch \
file://weston.service \
file://weston.ini \
"