summaryrefslogtreecommitdiff
path: root/sys/dev/evdev/evdev.c
diff options
context:
space:
mode:
authorOleksandr Tymoshenko <gonzo@FreeBSD.org>2016-10-08 17:59:53 +0000
committerOleksandr Tymoshenko <gonzo@FreeBSD.org>2016-10-08 17:59:53 +0000
commitc736a757129a1a2c1e8e11d18daa9742f7ec0d35 (patch)
tree6ecd34932fcf40fe95fd7bb2e8f86ccca361bb8d /sys/dev/evdev/evdev.c
parentbfbd1bb744b0f1091f0cd14467ec7d8b51560bee (diff)
Notes
Diffstat (limited to 'sys/dev/evdev/evdev.c')
-rw-r--r--sys/dev/evdev/evdev.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/sys/dev/evdev/evdev.c b/sys/dev/evdev/evdev.c
index 7da8eb14182c..63e04966fec9 100644
--- a/sys/dev/evdev/evdev.c
+++ b/sys/dev/evdev/evdev.c
@@ -686,6 +686,8 @@ evdev_sparse_event(struct evdev_dev *evdev, uint16_t type, uint16_t code,
case EV_SYN:
if (code == SYN_REPORT) {
+ /* Count empty reports as well as non empty */
+ evdev->ev_report_count++;
/* Skip empty reports */
if (!evdev->ev_report_opened)
return (EV_SKIP_EVENT);
@@ -722,10 +724,7 @@ evdev_propagate_event(struct evdev_dev *evdev, uint16_t type, uint16_t code,
EVDEV_CLIENT_UNLOCKQ(client);
}
- /* Update counters */
evdev->ev_event_count++;
- if (type == EV_SYN && code == SYN_REPORT)
- evdev->ev_report_count++;
}
void
@@ -765,6 +764,9 @@ evdev_push_event(struct evdev_dev *evdev, uint16_t type, uint16_t code,
if (evdev->ev_lock_type == EV_LOCK_INTERNAL)
EVDEV_LOCK(evdev);
evdev_modify_event(evdev, type, code, &value);
+ if (type == EV_SYN && code == SYN_REPORT &&
+ bit_test(evdev->ev_flags, EVDEV_FLAG_MT_AUTOREL))
+ evdev_send_mt_autorel(evdev);
if (type == EV_SYN && code == SYN_REPORT && evdev->ev_report_opened &&
bit_test(evdev->ev_flags, EVDEV_FLAG_MT_STCOMPAT))
evdev_send_mt_compat(evdev);