struct wl_listener xdg_toplevel_decoration;
#if HAVE_XWAYLAND
struct wlr_xwayland *xwayland;
+ struct wl_listener xwayland_ready;
struct wl_listener new_xwayland_surface;
#endif
}
}
+#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
server_init(struct server *server)
{
wl_signal_add(&server->xwayland->events.new_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) {
wlr_log_errno(WLR_ERROR, "unable to set DISPLAY for xwayland");
} else {
} else {
wlr_log(WLR_DEBUG, "WAYLAND_DISPLAY=%s", socket);
}
-
-#if HAVE_XWAYLAND
- wlr_xwayland_set_seat(server->xwayland, server->seat.seat);
-#endif
}
void