keyboard: only update LEDs when changed

This commit is contained in:
xiliuya 2022-11-19 14:52:31 +08:00 committed by Simon Ser
parent caaea01bf6
commit 7f6d646e0a
2 changed files with 7 additions and 0 deletions

View file

@ -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;

View file

@ -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);
} }