From 006cf67c77d0587f3ead1c7551a542516cb19bf1 Mon Sep 17 00:00:00 2001 From: Derek Foreman Date: Wed, 15 Jul 2015 13:00:46 -0500 Subject: [PATCH] desktop-shell: Check for device presence properly MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 Reviewed-by: Jonas Ã…dahl --- desktop-shell/shell.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/desktop-shell/shell.c b/desktop-shell/shell.c index d08b0d81..009e6710 100644 --- a/desktop-shell/shell.c +++ b/desktop-shell/shell.c @@ -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); }