This is in order to support nested compositor architectures
where system compositor using drm-backend is shared among
multiple child compositors using wayland-backend.

Signed-off-by: Imran Zaman <imran.za...@gmail.com>
---
 src/wayland-client.c | 5 ++++-
 src/wayland-server.c | 5 ++++-
 2 files changed, 8 insertions(+), 2 deletions(-)

diff --git a/src/wayland-client.c b/src/wayland-client.c
index b0f77b9..07db370 100644
--- a/src/wayland-client.c
+++ b/src/wayland-client.c
@@ -700,7 +700,9 @@ connect_to_socket(const char *name)
        const char *runtime_dir;
        int name_size, fd;
 
-       runtime_dir = getenv("XDG_RUNTIME_DIR");
+       runtime_dir = getenv("WAYLAND_CLIENT_DIR");
+       if (runtime_dir == NULL)
+               runtime_dir = getenv("XDG_RUNTIME_DIR");
        if (!runtime_dir) {
                wl_log("error: XDG_RUNTIME_DIR not set in the environment.\n");
                /* to prevent programs reporting
@@ -723,6 +725,7 @@ connect_to_socket(const char *name)
        name_size =
                snprintf(addr.sun_path, sizeof addr.sun_path,
                         "%s/%s", runtime_dir, name) + 1;
+       unsetenv("WAYLAND_CLIENT_DIR");
 
        assert(name_size > 0);
        if (name_size > (int)sizeof addr.sun_path) {
diff --git a/src/wayland-server.c b/src/wayland-server.c
index 674aeca..09e8903 100644
--- a/src/wayland-server.c
+++ b/src/wayland-server.c
@@ -1080,7 +1080,9 @@ wl_socket_init_for_display_name(struct wl_socket *s, 
const char *name)
        int name_size;
        const char *runtime_dir;
 
-       runtime_dir = getenv("XDG_RUNTIME_DIR");
+       runtime_dir = getenv("WAYLAND_SERVER_DIR");
+       if (runtime_dir == NULL)
+               runtime_dir = getenv("XDG_RUNTIME_DIR");
        if (!runtime_dir) {
                wl_log("error: XDG_RUNTIME_DIR not set in the environment\n");
 
@@ -1093,6 +1095,7 @@ wl_socket_init_for_display_name(struct wl_socket *s, 
const char *name)
        s->addr.sun_family = AF_LOCAL;
        name_size = snprintf(s->addr.sun_path, sizeof s->addr.sun_path,
                             "%s/%s", runtime_dir, name) + 1;
+       unsetenv("WAYLAND_SERVER_DIR");
 
        s->display_name = (s->addr.sun_path + name_size - 1) - strlen(name);
 
-- 
1.9.1

_______________________________________________
wayland-devel mailing list
wayland-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/wayland-devel

Reply via email to