mirror of
https://gitlab.freedesktop.org/wayland/weston.git
synced 2026-05-01 17:18:07 +02:00
desktop-shell: Don't call wl_list_init() in the middle of a list
seat->keyboard_focus_listener.link isn't a head, it's just sometimes a member of the focus signal list. Calling wl_list_init() on it puts a loop in the list. Instead, we remove the item then init it. That way we can call remove on it again later even if it hasn't been re-added to a list. Signed-off-by: Derek Foreman <derekf@osg.samsung.com> Reviewed-by: Jonas Ådahl <jadahl@gmail.com>
This commit is contained in:
parent
30ce607682
commit
60d97311be
1 changed files with 2 additions and 0 deletions
|
|
@ -3110,6 +3110,7 @@ shell_seat_caps_changed(struct wl_listener *listener, void *data)
|
|||
wl_signal_add(&seat->seat->keyboard->focus_signal,
|
||||
&seat->keyboard_focus_listener);
|
||||
} else if (!seat->seat->keyboard) {
|
||||
wl_list_remove(&seat->keyboard_focus_listener.link);
|
||||
wl_list_init(&seat->keyboard_focus_listener.link);
|
||||
}
|
||||
|
||||
|
|
@ -3118,6 +3119,7 @@ shell_seat_caps_changed(struct wl_listener *listener, void *data)
|
|||
wl_signal_add(&seat->seat->pointer->focus_signal,
|
||||
&seat->pointer_focus_listener);
|
||||
} else if (!seat->seat->pointer) {
|
||||
wl_list_remove(&seat->pointer_focus_listener.link);
|
||||
wl_list_init(&seat->pointer_focus_listener.link);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue