evdev: make evdev_led_update independent from struct evdev_seat
authorPekka Paalanen <ppaalanen@gmail.com>
Fri, 3 Aug 2012 11:39:01 +0000 (14:39 +0300)
committerJonas Ådahl <jadahl@gmail.com>
Sun, 10 Nov 2013 16:51:30 +0000 (17:51 +0100)
in preparation of removing evdev_seat

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

index 3ea50e5..bd14f14 100644 (file)
@@ -32,7 +32,7 @@
 #include "launcher-util.h"
 
 static void
-evdev_led_update(struct weston_seat *seat_base, enum weston_led leds)
+evdev_led_update(struct wl_list *evdev_devices, enum weston_led leds)
 {
        static const struct {
                enum weston_led weston;
@@ -42,7 +42,6 @@ evdev_led_update(struct weston_seat *seat_base, enum weston_led leds)
                { LED_CAPS_LOCK, LED_CAPSL },
                { LED_SCROLL_LOCK, LED_SCROLLL },
        };
-       struct evdev_seat *seat = (struct evdev_seat *) seat_base;
        struct evdev_input_device *device;
        struct input_event ev[ARRAY_LENGTH(map)];
        unsigned int i;
@@ -54,12 +53,20 @@ evdev_led_update(struct weston_seat *seat_base, enum weston_led leds)
                ev[i].value = !!(leds & map[i].weston);
        }
 
-       wl_list_for_each(device, &seat->devices_list, link) {
+       wl_list_for_each(device, evdev_devices, link) {
                if (device->caps & EVDEV_KEYBOARD)
                        write(device->fd, ev, sizeof ev);
        }
 }
 
+static void
+drm_led_update(struct weston_seat *seat_base, enum weston_led leds)
+{
+       struct evdev_seat *seat = (struct evdev_seat *) seat_base;
+
+       evdev_led_update(&seat->devices_list, leds);
+}
+
 static inline void
 evdev_process_key(struct evdev_input_device *device,
                         struct input_event *e, int time)
@@ -753,7 +760,7 @@ evdev_input_create(struct weston_compositor *c, struct udev *udev,
 
        memset(seat, 0, sizeof *seat);
        weston_seat_init(&seat->base, c);
-       seat->base.led_update = evdev_led_update;
+       seat->base.led_update = drm_led_update;
 
        wl_list_init(&seat->devices_list);
        seat->seat_id = strdup(seat_id);