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 the last release.

Signed-off-by: Derek Foreman <[email protected]>
---
 fullscreen-shell/fullscreen-shell.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/fullscreen-shell/fullscreen-shell.c 
b/fullscreen-shell/fullscreen-shell.c
index ab9c420..cae6ed5 100644
--- a/fullscreen-shell/fullscreen-shell.c
+++ b/fullscreen-shell/fullscreen-shell.c
@@ -102,7 +102,7 @@ seat_caps_changed(struct wl_listener *l, void *data)
        listener = container_of(l, struct pointer_focus_listener, seat_caps);
 
        /* no pointer */
-       if (seat->pointer) {
+       if (seat->pointer_device_count) {
                if (!listener->pointer_focus.link.prev) {
                        wl_signal_add(&seat->pointer->focus_signal,
                                      &listener->pointer_focus);
@@ -113,7 +113,7 @@ seat_caps_changed(struct wl_listener *l, void *data)
                }
        }
 
-       if (seat->keyboard && seat->keyboard->focus != NULL) {
+       if (seat->keyboard_device_count && seat->keyboard->focus != NULL) {
                wl_list_for_each(fsout, &listener->shell->output_list, link) {
                        if (fsout->surface) {
                                weston_surface_activate(fsout->surface, seat);
-- 
2.1.4

_______________________________________________
wayland-devel mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/wayland-devel

Reply via email to