From 770a561bcef11a4991404169c50414ae867c2528 Mon Sep 17 00:00:00 2001 From: Simon Ser Date: Fri, 25 Jun 2021 11:46:57 +0200 Subject: [PATCH] xwayland: embed wlr_xwayland_server_options in server struct As more options are added, more fields will be duplicated. Let's just embed the struct in wlr_xwayland_server so that we don't need to keep both in sync. --- include/wlr/xwayland.h | 13 ++++++------- xwayland/server.c | 13 ++++++------- 2 files changed, 12 insertions(+), 14 deletions(-) diff --git a/include/wlr/xwayland.h b/include/wlr/xwayland.h index 6a83e08a..1f0e5019 100644 --- a/include/wlr/xwayland.h +++ b/include/wlr/xwayland.h @@ -19,6 +19,11 @@ struct wlr_xwm; struct wlr_xwayland_cursor; +struct wlr_xwayland_server_options { + bool lazy; + bool enable_wm; +}; + struct wlr_xwayland_server { pid_t pid; struct wl_client *client; @@ -33,8 +38,7 @@ struct wlr_xwayland_server { char display_name[16]; int x_fd[2]; struct wl_event_source *x_fd_read_event[2]; - bool lazy; - bool enable_wm; + struct wlr_xwayland_server_options options; struct wl_display *wl_display; @@ -49,11 +53,6 @@ struct wlr_xwayland_server { void *data; }; -struct wlr_xwayland_server_options { - bool lazy; - bool enable_wm; -}; - struct wlr_xwayland_server_ready_event { struct wlr_xwayland_server *server; int wm_fd; diff --git a/xwayland/server.c b/xwayland/server.c index 5569a9d8..7af01b6f 100644 --- a/xwayland/server.c +++ b/xwayland/server.c @@ -32,7 +32,7 @@ noreturn static void exec_xwayland(struct wlr_xwayland_server *server) { wlr_log(WLR_ERROR, "Failed to unset CLOEXEC on FD"); _exit(EXIT_FAILURE); } - if (server->enable_wm && !set_cloexec(server->wm_fd[1], false)) { + if (server->options.enable_wm && !set_cloexec(server->wm_fd[1], false)) { wlr_log(WLR_ERROR, "Failed to unset CLOEXEC on FD"); _exit(EXIT_FAILURE); } @@ -67,7 +67,7 @@ noreturn static void exec_xwayland(struct wlr_xwayland_server *server) { #endif char wmfd[16]; - if (server->enable_wm) { + if (server->options.enable_wm) { snprintf(wmfd, sizeof(wmfd), "%d", server->wm_fd[1]); argv[i++] = "-wm"; argv[i++] = wmfd; @@ -187,7 +187,7 @@ static void handle_client_destroy(struct wl_listener *listener, void *data) { server_finish_process(server); if (time(NULL) - server->server_start > 5) { - if (server->lazy) { + if (server->options.lazy) { wlr_log(WLR_INFO, "Restarting Xwayland (lazy)"); server_start_lazy(server); } else { @@ -287,7 +287,7 @@ static bool server_start(struct wlr_xwayland_server *server) { server_finish_process(server); return false; } - if (server->enable_wm) { + if (server->options.enable_wm) { if (socketpair(AF_UNIX, SOCK_STREAM, 0, server->wm_fd) != 0) { wlr_log_errno(WLR_ERROR, "socketpair failed"); server_finish_process(server); @@ -443,8 +443,7 @@ struct wlr_xwayland_server *wlr_xwayland_server_create( } server->wl_display = wl_display; - server->lazy = options->lazy; - server->enable_wm = options->enable_wm; + server->options = *options; server->x_fd[0] = server->x_fd[1] = -1; server->wl_fd[0] = server->wl_fd[1] = -1; @@ -457,7 +456,7 @@ struct wlr_xwayland_server *wlr_xwayland_server_create( goto error_alloc; } - if (server->lazy) { + if (server->options.lazy) { if (!server_start_lazy(server)) { goto error_display; }