From 7f6d646e0aa78bd796c6a106b77951b4be61935a Mon Sep 17 00:00:00 2001 From: xiliuya Date: Sat, 19 Nov 2022 14:52:31 +0800 Subject: [PATCH] keyboard: only update LEDs when changed --- include/wlr/types/wlr_keyboard.h | 1 + types/wlr_keyboard.c | 6 ++++++ 2 files changed, 7 insertions(+) diff --git a/include/wlr/types/wlr_keyboard.h b/include/wlr/types/wlr_keyboard.h index d53d3c30..b1e01c4d 100644 --- a/include/wlr/types/wlr_keyboard.h +++ b/include/wlr/types/wlr_keyboard.h @@ -62,6 +62,7 @@ struct wlr_keyboard { xkb_led_index_t led_indexes[WLR_LED_COUNT]; xkb_mod_index_t mod_indexes[WLR_MODIFIER_COUNT]; + uint32_t leds; uint32_t keycodes[WLR_KEYBOARD_KEYS_CAP]; size_t num_keycodes; struct wlr_keyboard_modifiers modifiers; diff --git a/types/wlr_keyboard.c b/types/wlr_keyboard.c index 5150af87..b1084841 100644 --- a/types/wlr_keyboard.c +++ b/types/wlr_keyboard.c @@ -163,6 +163,12 @@ void wlr_keyboard_finish(struct wlr_keyboard *kb) { } 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) { kb->impl->led_update(kb, leds); }