diff options
author | Henrik Rydberg <rydberg@euromail.se> | 2012-09-15 15:15:58 +0200 |
---|---|---|
committer | Henrik Rydberg <rydberg@euromail.se> | 2012-09-19 19:50:17 +0200 |
commit | 8d18fba282120a4a8e4416d1202522ffae8cad58 (patch) | |
tree | 22e3ddabba314c9ad544b9fefe004194205c2940 /drivers/input/evdev.c | |
parent | 4cbe5a555fa58a79b6ecbb6c531b8bab0650778d (diff) |
Input: Break out MT data
Move all MT-related things to a separate place. This saves some
bytes for non-mt input devices, and prepares for new MT features.
Reviewed-and-tested-by: Benjamin Tissoires <benjamin.tissoires@enac.fr>
Tested-by: Ping Cheng <pingc@wacom.com>
Acked-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Signed-off-by: Henrik Rydberg <rydberg@euromail.se>
Diffstat (limited to 'drivers/input/evdev.c')
-rw-r--r-- | drivers/input/evdev.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/drivers/input/evdev.c b/drivers/input/evdev.c index 6c58bfff01a3..a0692c551be5 100644 --- a/drivers/input/evdev.c +++ b/drivers/input/evdev.c @@ -653,20 +653,22 @@ static int evdev_handle_mt_request(struct input_dev *dev, unsigned int size, int __user *ip) { - const struct input_mt_slot *mt = dev->mt; + const struct input_mt *mt = dev->mt; unsigned int code; int max_slots; int i; if (get_user(code, &ip[0])) return -EFAULT; - if (!input_is_mt_value(code)) + if (!mt || !input_is_mt_value(code)) return -EINVAL; max_slots = (size - sizeof(__u32)) / sizeof(__s32); - for (i = 0; i < dev->mtsize && i < max_slots; i++) - if (put_user(input_mt_get_value(&mt[i], code), &ip[1 + i])) + for (i = 0; i < mt->num_slots && i < max_slots; i++) { + int value = input_mt_get_value(&mt->slots[i], code); + if (put_user(value, &ip[1 + i])) return -EFAULT; + } return 0; } |