mirror of
https://github.com/DreamMaoMao/maomaowm.git
synced 2026-05-03 06:46:38 -04:00
opt: avoid repeatedly destroy keyboard events
This commit is contained in:
parent
e7d8cb7bfa
commit
3b4683cc49
1 changed files with 10 additions and 3 deletions
13
src/mango.c
13
src/mango.c
|
|
@ -3192,9 +3192,12 @@ void destroyinputdevice(struct wl_listener *listener, void *data) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case WLR_INPUT_DEVICE_KEYBOARD: {
|
case WLR_INPUT_DEVICE_KEYBOARD: {
|
||||||
struct wlr_keyboard *keyboard =
|
if (kb_group) {
|
||||||
(struct wlr_keyboard *)input_dev->device_data;
|
struct wlr_keyboard *keyboard =
|
||||||
wlr_keyboard_group_remove_keyboard(kb_group->wlr_group, keyboard);
|
(struct wlr_keyboard *)input_dev->device_data;
|
||||||
|
wlr_keyboard_group_remove_keyboard(kb_group->wlr_group,
|
||||||
|
keyboard);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
// 可以添加其他设备类型的清理代码
|
// 可以添加其他设备类型的清理代码
|
||||||
|
|
@ -3504,6 +3507,10 @@ void destroysessionlock(struct wl_listener *listener, void *data) {
|
||||||
|
|
||||||
void destroykeyboardgroup(struct wl_listener *listener, void *data) {
|
void destroykeyboardgroup(struct wl_listener *listener, void *data) {
|
||||||
KeyboardGroup *group = wl_container_of(listener, group, destroy);
|
KeyboardGroup *group = wl_container_of(listener, group, destroy);
|
||||||
|
|
||||||
|
if (group == kb_group)
|
||||||
|
kb_group = NULL;
|
||||||
|
|
||||||
wl_event_source_remove(group->key_repeat_source);
|
wl_event_source_remove(group->key_repeat_source);
|
||||||
wl_list_remove(&group->key.link);
|
wl_list_remove(&group->key.link);
|
||||||
wl_list_remove(&group->modifiers.link);
|
wl_list_remove(&group->modifiers.link);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue