evdev: do not pass a list to evdev_led_update()
authorPekka Paalanen <ppaalanen@gmail.com>
Mon, 6 Aug 2012 11:57:07 +0000 (14:57 +0300)
committerJonas Ådahl <jadahl@gmail.com>
Sun, 10 Nov 2013 16:51:30 +0000 (17:51 +0100)
evdev_led_update() does not really need the whole list of device at
once, it can be called one device at a time.

Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com>
src/evdev.c
src/evdev.h

index 7d93564..dba33ba 100644 (file)
@@ -31,7 +31,7 @@
 #include "evdev.h"
 
 void
-evdev_led_update(struct wl_list *evdev_devices, enum weston_led leds)
+evdev_led_update(struct evdev_input_device *device, enum weston_led leds)
 {
        static const struct {
                enum weston_led weston;
@@ -41,10 +41,12 @@ evdev_led_update(struct wl_list *evdev_devices, enum weston_led leds)
                { LED_CAPS_LOCK, LED_CAPSL },
                { LED_SCROLL_LOCK, LED_SCROLLL },
        };
-       struct evdev_input_device *device;
        struct input_event ev[ARRAY_LENGTH(map)];
        unsigned int i;
 
+       if (!device->caps & EVDEV_KEYBOARD)
+               return;
+
        memset(ev, 0, sizeof(ev));
        for (i = 0; i < ARRAY_LENGTH(map); i++) {
                ev[i].type = EV_LED;
@@ -52,11 +54,8 @@ evdev_led_update(struct wl_list *evdev_devices, enum weston_led leds)
                ev[i].value = !!(leds & map[i].weston);
        }
 
-       wl_list_for_each(device, evdev_devices, link) {
-               if (device->caps & EVDEV_KEYBOARD)
-                       i = write(device->fd, ev, sizeof ev);
-               (void)i; /* no, we really don't care about the return value */
-       }
+       i = write(device->fd, ev, sizeof ev);
+       (void)i; /* no, we really don't care about the return value */
 }
 
 static inline void
index 379838a..003b362 100644 (file)
@@ -106,7 +106,7 @@ struct evdev_dispatch *
 evdev_touchpad_create(struct evdev_input_device *device);
 
 void
-evdev_led_update(struct wl_list *evdev_devices, enum weston_led leds);
+evdev_led_update(struct evdev_input_device *device, enum weston_led leds);
 
 struct evdev_input_device *
 evdev_input_device_create(struct weston_seat *seat,