Under Weston's drm-backend, after returning to Weston from another VT, no window has focus.
There's already code in notify_keyboard_focus_out and notify_keyboard_focus_in to save and restore focus, respectively; and udev_input_enable eventually calls notify_keyboard_focus_in, by way of evdev_notify_keyboard_focus. But udev_input_disable doesn't currently call notify_keyboard_focus_out. This patch makes udev_input_disable symmetric with udev_input_enable by calling notify_keyboard_focus_out on every seat, to save focus before suspending libinput. In my testing this successfully resolved my issue. However, I don't have a multi-seat setup to verify that it works there too. Signed-off-by: Jamey Sharp <[email protected]> --- I'm not subscribed to the list, so please Cc me on replies. libweston/libinput-seat.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/libweston/libinput-seat.c b/libweston/libinput-seat.c index ac1e8e99..ded6dd3c 100644 --- a/libweston/libinput-seat.c +++ b/libweston/libinput-seat.c @@ -158,9 +158,14 @@ udev_seat_remove_devices(struct udev_seat *seat) void udev_input_disable(struct udev_input *input) { + struct udev_seat *seat; + if (input->suspended) return; + wl_list_for_each(seat, &input->compositor->seat_list, base.link) + notify_keyboard_focus_out(&seat->base); + wl_event_source_remove(input->libinput_source); input->libinput_source = NULL; libinput_suspend(input->libinput); -- 2.16.2 _______________________________________________ wayland-devel mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/wayland-devel
