aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon Ser <contact@emersion.fr>2021-06-25 11:46:57 +0200
committerKenny Levinsen <kl@kl.wtf>2021-07-27 00:18:11 +0200
commit770a561bcef11a4991404169c50414ae867c2528 (patch)
tree8787ec260db101a763b2679005f1068f6fe71f8f
parent4b316a38230079dbe0221d10934caf3134c086d1 (diff)
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.
-rw-r--r--include/wlr/xwayland.h13
-rw-r--r--xwayland/server.c13
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;
}