From b9d38f45524656f98d365ae4911b0ac01bc6cb94 Mon Sep 17 00:00:00 2001 From: Pekka Paalanen Date: Mon, 6 Aug 2012 14:57:07 +0300 Subject: [PATCH] evdev: do not pass a list to evdev_led_update() 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 --- src/compositor-android.c | 4 +++- src/compositor-drm.c | 4 +++- src/evdev.c | 13 ++++++------- src/evdev.h | 2 +- 4 files changed, 13 insertions(+), 10 deletions(-) diff --git a/src/compositor-android.c b/src/compositor-android.c index 5d1eeee7..71b38cf1 100644 --- a/src/compositor-android.c +++ b/src/compositor-android.c @@ -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 diff --git a/src/compositor-drm.c b/src/compositor-drm.c index d35588c0..4f350f0c 100644 --- a/src/compositor-drm.c +++ b/src/compositor-drm.c @@ -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 diff --git a/src/evdev.c b/src/evdev.c index 7d935642..dba33bab 100644 --- a/src/evdev.c +++ b/src/evdev.c @@ -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 diff --git a/src/evdev.h b/src/evdev.h index 379838a3..003b3626 100644 --- a/src/evdev.h +++ b/src/evdev.h @@ -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,