[mutter/wip/carlosg/xwayland-on-demand: 428/430] wayland: Split Xwayland initialization in 2 steps
- From: Carlos Garnacho <carlosg src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [mutter/wip/carlosg/xwayland-on-demand: 428/430] wayland: Split Xwayland initialization in 2 steps
- Date: Tue, 16 Apr 2019 17:05:12 +0000 (UTC)
commit 62bd923682048da02ce167577f38313e7c19537e
Author: Carlos Garnacho <carlosg gnome org>
Date: Mon Dec 10 14:24:43 2018 +0100
wayland: Split Xwayland initialization in 2 steps
src/wayland/meta-wayland-private.h | 1 +
src/wayland/meta-xwayland.c | 22 +++++++++++++++-------
2 files changed, 16 insertions(+), 7 deletions(-)
---
diff --git a/src/wayland/meta-wayland-private.h b/src/wayland/meta-wayland-private.h
index 31a7fc748..f2410be4c 100644
--- a/src/wayland/meta-wayland-private.h
+++ b/src/wayland/meta-wayland-private.h
@@ -48,6 +48,7 @@ typedef struct
char *lock_file;
int abstract_fd;
int unix_fd;
+ struct wl_display *wayland_display;
struct wl_client *client;
struct wl_resource *xserver_resource;
char *display_name;
diff --git a/src/wayland/meta-xwayland.c b/src/wayland/meta-xwayland.c
index 90fdd222b..955f18e65 100644
--- a/src/wayland/meta-xwayland.c
+++ b/src/wayland/meta-xwayland.c
@@ -465,9 +465,8 @@ on_displayfd_ready (int fd,
return G_SOURCE_REMOVE;
}
-gboolean
-meta_xwayland_start (MetaXWaylandManager *manager,
- struct wl_display *wl_display)
+static gboolean
+meta_xwayland_init_xserver (MetaXWaylandManager *manager)
{
int xwayland_client_fd[2];
int displayfd[2];
@@ -476,9 +475,6 @@ meta_xwayland_start (MetaXWaylandManager *manager,
GSubprocessFlags flags;
GError *error = NULL;
- if (!choose_xdisplay (manager))
- goto out;
-
/* We want xwayland to be a wayland client so we make a socketpair to setup a
* wayland protocol connection. */
if (socketpair (AF_UNIX, SOCK_STREAM | SOCK_CLOEXEC, 0, xwayland_client_fd) < 0)
@@ -537,7 +533,8 @@ meta_xwayland_start (MetaXWaylandManager *manager,
g_subprocess_wait_async (manager->proc, manager->xserver_died_cancellable,
xserver_died, NULL);
g_unix_fd_add (displayfd[0], G_IO_IN, on_displayfd_ready, manager);
- manager->client = wl_client_create (wl_display, xwayland_client_fd[0]);
+ manager->client = wl_client_create (manager->wayland_display,
+ xwayland_client_fd[0]);
/* We need to run a mainloop until we know xwayland has a binding
* for our xserver interface at which point we can assume it's
@@ -556,6 +553,17 @@ out:
return started;
}
+gboolean
+meta_xwayland_start (MetaXWaylandManager *manager,
+ struct wl_display *wl_display)
+{
+ if (!choose_xdisplay (manager))
+ return FALSE;
+
+ manager->wayland_display = wl_display;
+ return meta_xwayland_init_xserver (manager);
+}
+
static void
on_x11_display_closing (MetaDisplay *display)
{
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]