mirror of
https://gitlab.freedesktop.org/wayland/weston
synced 2024-10-04 21:32:42 +00:00
desktop-shell: Check for device presence properly
We should be testing device counts, not pointers. The pointers are persistent state that never gets freed, and are an inaccurate indicator of device presence after a release. Signed-off-by: Derek Foreman <derekf@osg.samsung.com> Reviewed-by: Jonas Ådahl <jadahl@gmail.com>
This commit is contained in:
parent
60d97311be
commit
006cf67c77
|
@ -3105,20 +3105,20 @@ shell_seat_caps_changed(struct wl_listener *listener, void *data)
|
|||
|
||||
seat = container_of(listener, struct shell_seat, caps_changed_listener);
|
||||
|
||||
if (seat->seat->keyboard &&
|
||||
if (seat->seat->keyboard_device_count &&
|
||||
wl_list_empty(&seat->keyboard_focus_listener.link)) {
|
||||
wl_signal_add(&seat->seat->keyboard->focus_signal,
|
||||
&seat->keyboard_focus_listener);
|
||||
} else if (!seat->seat->keyboard) {
|
||||
} else if (!seat->seat->keyboard_device_count) {
|
||||
wl_list_remove(&seat->keyboard_focus_listener.link);
|
||||
wl_list_init(&seat->keyboard_focus_listener.link);
|
||||
}
|
||||
|
||||
if (seat->seat->pointer &&
|
||||
if (seat->seat->pointer_device_count &&
|
||||
wl_list_empty(&seat->pointer_focus_listener.link)) {
|
||||
wl_signal_add(&seat->seat->pointer->focus_signal,
|
||||
&seat->pointer_focus_listener);
|
||||
} else if (!seat->seat->pointer) {
|
||||
} else if (!seat->seat->pointer_device_count) {
|
||||
wl_list_remove(&seat->pointer_focus_listener.link);
|
||||
wl_list_init(&seat->pointer_focus_listener.link);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue