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)
committerKristian Høgsberg <krh@bitplanet.net>
Thu, 9 Aug 2012 14:28:35 +0000 (10:28 -0400)
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/compositor-android.c
src/compositor-drm.c
src/evdev.c
src/evdev.h

index 5d1eeee..71b38cf 100644 (file)
@@ -247,8 +247,10 @@ static void
 android_led_update(struct weston_seat *seat_base, enum weston_led leds)
 {
        struct android_seat *seat = to_android_seat(seat_base);
+       struct evdev_input_device *device;
 
-       evdev_led_update(&seat->devices_list, leds);
+       wl_list_for_each(device, &seat->devices_list, link)
+               evdev_led_update(device, leds);
 }
 
 static void
index d35588c..4f350f0 100644 (file)
@@ -1971,8 +1971,10 @@ static void
 drm_led_update(struct weston_seat *seat_base, enum weston_led leds)
 {
        struct drm_seat *seat = (struct drm_seat *) seat_base;
+       struct evdev_input_device *device;
 
-       evdev_led_update(&seat->devices_list, leds);
+       wl_list_for_each(device, &seat->devices_list, link)
+               evdev_led_update(device, leds);
 }
 
 static void
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,