From 3f40b0031f457da6133551f972d0a001d6141121 Mon Sep 17 00:00:00 2001 From: Simon Ser Date: Tue, 18 Oct 2022 13:49:18 +0200 Subject: [PATCH] xwayland/server: add start signal This can be used to know when wlr_xwayland_server decides to start a new Xwayland process. At that point the wl_client has already been created but the Xwayland process hasn't been started yet. --- include/wlr/xwayland/server.h | 1 + xwayland/server.c | 3 +++ 2 files changed, 4 insertions(+) diff --git a/include/wlr/xwayland/server.h b/include/wlr/xwayland/server.h index 9fa82d8e..a2a0dd0b 100644 --- a/include/wlr/xwayland/server.h +++ b/include/wlr/xwayland/server.h @@ -41,6 +41,7 @@ struct wlr_xwayland_server { struct wl_display *wl_display; struct { + struct wl_signal start; struct wl_signal ready; struct wl_signal destroy; } events; diff --git a/xwayland/server.c b/xwayland/server.c index 75b919b4..175a003e 100644 --- a/xwayland/server.c +++ b/xwayland/server.c @@ -365,6 +365,8 @@ static bool server_start(struct wlr_xwayland_server *server) { server->pipe_source = wl_event_loop_add_fd(loop, notify_fd[0], WL_EVENT_READABLE, xserver_handle_ready, server); + wl_signal_emit_mutable(&server->events.start, NULL); + server->pid = fork(); if (server->pid < 0) { wlr_log_errno(WLR_ERROR, "fork failed"); @@ -460,6 +462,7 @@ struct wlr_xwayland_server *wlr_xwayland_server_create( server->wl_fd[0] = server->wl_fd[1] = -1; server->wm_fd[0] = server->wm_fd[1] = -1; + wl_signal_init(&server->events.start); wl_signal_init(&server->events.ready); wl_signal_init(&server->events.destroy);