diff --git a/src/compositor-drm.c b/src/compositor-drm.c index eab5f5c2..bcd8aacb 100644 --- a/src/compositor-drm.c +++ b/src/compositor-drm.c @@ -2012,7 +2012,8 @@ evdev_remove_devices(struct weston_seat *seat_base) wl_list_for_each_safe(device, next, &seat->devices_list, link) evdev_input_device_destroy(device); - notify_keyboard_focus_out(&seat->base.seat); + if (seat->base.seat.keyboard) + notify_keyboard_focus_out(&seat->base.seat); } static void diff --git a/src/evdev.c b/src/evdev.c index 7efbc7da..09275f44 100644 --- a/src/evdev.c +++ b/src/evdev.c @@ -561,10 +561,14 @@ evdev_notify_keyboard_focus(struct weston_seat *seat, struct evdev_input_device *device; struct wl_array keys; unsigned int i, set; - char evdev_keys[(KEY_CNT + 7) / 8], all_keys[(KEY_CNT + 7) / 8]; + char evdev_keys[(KEY_CNT + 7) / 8]; + char all_keys[(KEY_CNT + 7) / 8]; uint32_t *k; int ret; + if (!seat->seat.keyboard) + return; + memset(all_keys, 0, sizeof all_keys); wl_list_for_each(device, evdev_devices, link) { memset(evdev_keys, 0, sizeof evdev_keys);