Skip to content
Snippets Groups Projects
Commit 60d97311 authored by Derek Foreman's avatar Derek Foreman Committed by Bryce Harrington
Browse files

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: default avatarDerek Foreman <derekf@osg.samsung.com>
Reviewed-by: default avatarJonas Ådahl <jadahl@gmail.com>
parent 30ce6076
No related branches found
No related tags found
No related merge requests found
......@@ -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);
}
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment