summaryrefslogtreecommitdiff
path: root/libevdev/libevdev.c
diff options
context:
space:
mode:
authorPeter Hutterer <peter.hutterer@who-t.net>2014-04-01 15:40:09 +1000
committerPeter Hutterer <peter.hutterer@who-t.net>2014-04-03 13:31:39 +1000
commit27df93737ee4a7d20d913e408d5f9f8d2bb33bad (patch)
treed53771506f89769c51621239622962dc84936e00 /libevdev/libevdev.c
parentf8fba5b5884bfb62225b9bde991dfdbec92ad751 (diff)
downloadlibevdev-27df93737ee4a7d20d913e408d5f9f8d2bb33bad.tar.gz
Move slot-related initialization down
No real effects, but improves readability Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Reviewed-by: Benjamin Tissoires <benjamin.tissoires@gmail.com>
Diffstat (limited to 'libevdev/libevdev.c')
-rw-r--r--libevdev/libevdev.c63
1 files changed, 33 insertions, 30 deletions
diff --git a/libevdev/libevdev.c b/libevdev/libevdev.c
index 572fd37..119f18f 100644
--- a/libevdev/libevdev.c
+++ b/libevdev/libevdev.c
@@ -379,44 +379,47 @@ libevdev_set_fd(struct libevdev* dev, int fd)
goto out;
dev->abs_info[i] = abs_info;
+ }
+ }
- /* devices with ABS_MT_SLOT - 1 aren't MT devices,
- see the documentation for multitouch-related
- functions for more details */
- if (i == ABS_MT_SLOT &&
- !libevdev_has_event_code(dev, EV_ABS, ABS_MT_SLOT - 1)) {
- dev->num_slots = abs_info.maximum + 1;
- dev->mt_slot_vals = calloc(dev->num_slots * ABS_MT_CNT, sizeof(int));
- if (!dev->mt_slot_vals) {
- rc = -ENOMEM;
- goto out;
- }
- dev->current_slot = abs_info.value;
+ dev->fd = fd;
- dev->mt_sync.mt_state_sz = sizeof(*dev->mt_sync.mt_state) +
- (dev->num_slots) * sizeof(int);
- dev->mt_sync.mt_state = calloc(1, dev->mt_sync.mt_state_sz);
+ /* devices with ABS_MT_SLOT - 1 aren't MT devices,
+ see the documentation for multitouch-related
+ functions for more details */
+ if (!libevdev_has_event_code(dev, EV_ABS, ABS_MT_SLOT - 1) &&
+ libevdev_has_event_code(dev, EV_ABS, ABS_MT_SLOT)) {
+ const struct input_absinfo *abs_info;
- dev->mt_sync.tracking_id_changes_sz = NLONGS(dev->num_slots) * sizeof(long);
- dev->mt_sync.tracking_id_changes = malloc(dev->mt_sync.tracking_id_changes_sz);
+ abs_info = libevdev_get_abs_info(dev, ABS_MT_SLOT);
- dev->mt_sync.slot_update_sz = NLONGS(dev->num_slots * ABS_MT_CNT) * sizeof(long);
- dev->mt_sync.slot_update = malloc(dev->mt_sync.slot_update_sz);
+ dev->num_slots = abs_info->maximum + 1;
+ dev->mt_slot_vals = calloc(dev->num_slots * ABS_MT_CNT, sizeof(int));
+ if (!dev->mt_slot_vals) {
+ rc = -ENOMEM;
+ goto out;
+ }
+ dev->current_slot = abs_info->value;
- if (!dev->mt_sync.tracking_id_changes ||
- !dev->mt_sync.slot_update ||
- !dev->mt_sync.mt_state) {
- rc = -ENOMEM;
- goto out;
- }
- }
+ dev->mt_sync.mt_state_sz = sizeof(*dev->mt_sync.mt_state) +
+ (dev->num_slots) * sizeof(int);
+ dev->mt_sync.mt_state = calloc(1, dev->mt_sync.mt_state_sz);
+
+ dev->mt_sync.tracking_id_changes_sz = NLONGS(dev->num_slots) * sizeof(long);
+ dev->mt_sync.tracking_id_changes = malloc(dev->mt_sync.tracking_id_changes_sz);
+
+ dev->mt_sync.slot_update_sz = NLONGS(dev->num_slots * ABS_MT_CNT) * sizeof(long);
+ dev->mt_sync.slot_update = malloc(dev->mt_sync.slot_update_sz);
+
+ if (!dev->mt_sync.tracking_id_changes ||
+ !dev->mt_sync.slot_update ||
+ !dev->mt_sync.mt_state) {
+ rc = -ENOMEM;
+ goto out;
}
- }
- dev->fd = fd;
- if (!libevdev_has_event_code(dev, EV_ABS, ABS_MT_SLOT - 1) &&
- libevdev_has_event_code(dev, EV_ABS, ABS_MT_SLOT))
sync_mt_state(dev, 0);
+ }
rc = init_event_queue(dev);
if (rc < 0) {