keyboard: only update LEDs when changed

xiliuya 2 years ago committed by Simon Ser
parent caaea01bf6
commit 7f6d646e0a

@ -62,6 +62,7 @@ struct wlr_keyboard {
xkb_led_index_t led_indexes[WLR_LED_COUNT]; xkb_led_index_t led_indexes[WLR_LED_COUNT];
xkb_mod_index_t mod_indexes[WLR_MODIFIER_COUNT]; xkb_mod_index_t mod_indexes[WLR_MODIFIER_COUNT];
uint32_t leds;
uint32_t keycodes[WLR_KEYBOARD_KEYS_CAP]; uint32_t keycodes[WLR_KEYBOARD_KEYS_CAP];
size_t num_keycodes; size_t num_keycodes;
struct wlr_keyboard_modifiers modifiers; struct wlr_keyboard_modifiers modifiers;

@ -163,6 +163,12 @@ void wlr_keyboard_finish(struct wlr_keyboard *kb) {
} }
void wlr_keyboard_led_update(struct wlr_keyboard *kb, uint32_t leds) { void wlr_keyboard_led_update(struct wlr_keyboard *kb, uint32_t leds) {
if (kb->leds == leds) {
return;
}
kb->leds = leds;
if (kb->impl && kb->impl->led_update) { if (kb->impl && kb->impl->led_update) {
kb->impl->led_update(kb, leds); kb->impl->led_update(kb, leds);
} }

Loading…
Cancel
Save