Merge pull request #457 from Consolatis/fix/xwayland_seat

xwayland: (Re)set seat when xwayland is ready
This commit is contained in:
Johan Malm 2022-07-21 18:13:08 +01:00 committed by GitHub
commit 302b1e8299
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 15 additions and 4 deletions

View file

@ -165,6 +165,7 @@ struct server {
struct wl_listener xdg_toplevel_decoration; struct wl_listener xdg_toplevel_decoration;
#if HAVE_XWAYLAND #if HAVE_XWAYLAND
struct wlr_xwayland *xwayland; struct wlr_xwayland *xwayland;
struct wl_listener xwayland_ready;
struct wl_listener new_xwayland_surface; struct wl_listener new_xwayland_surface;
#endif #endif

View file

@ -174,6 +174,16 @@ handle_drm_lease_request(struct wl_listener *listener, void *data)
} }
} }
#if HAVE_XWAYLAND
static void
handle_xwayland_ready(struct wl_listener *listener, void *data)
{
struct server *server =
wl_container_of(listener, server, xwayland_ready);
wlr_xwayland_set_seat(server->xwayland, server->seat.seat);
}
#endif
void void
server_init(struct server *server) server_init(struct server *server)
{ {
@ -403,6 +413,10 @@ server_init(struct server *server)
wl_signal_add(&server->xwayland->events.new_surface, wl_signal_add(&server->xwayland->events.new_surface,
&server->new_xwayland_surface); &server->new_xwayland_surface);
server->xwayland_ready.notify = handle_xwayland_ready;
wl_signal_add(&server->xwayland->events.ready,
&server->xwayland_ready);
if (setenv("DISPLAY", server->xwayland->display_name, true) < 0) { if (setenv("DISPLAY", server->xwayland->display_name, true) < 0) {
wlr_log_errno(WLR_ERROR, "unable to set DISPLAY for xwayland"); wlr_log_errno(WLR_ERROR, "unable to set DISPLAY for xwayland");
} else { } else {
@ -457,10 +471,6 @@ server_start(struct server *server)
} else { } else {
wlr_log(WLR_DEBUG, "WAYLAND_DISPLAY=%s", socket); wlr_log(WLR_DEBUG, "WAYLAND_DISPLAY=%s", socket);
} }
#if HAVE_XWAYLAND
wlr_xwayland_set_seat(server->xwayland, server->seat.seat);
#endif
} }
void void