Move slot-related initialization down
authorPeter Hutterer <peter.hutterer@who-t.net>
Tue, 1 Apr 2014 05:40:09 +0000 (15:40 +1000)
committerPeter Hutterer <peter.hutterer@who-t.net>
Thu, 3 Apr 2014 03:31:39 +0000 (13:31 +1000)
No real effects, but improves readability

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Benjamin Tissoires <benjamin.tissoires@gmail.com>
libevdev/libevdev.c

index 572fd373858a9118ff5c44bcfdbcf8aa5f576534..119f18f0c6bbd5bad6e45ed0c9a73fb53a5408fa 100644 (file)
@@ -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) {