add [xwayland] path weston.ini option
authorMaksim Melnikau <maxposedon@gmail.com>
Wed, 14 Aug 2013 19:33:10 +0000 (22:33 +0300)
committerKristian Høgsberg <krh@bitplanet.net>
Fri, 16 Aug 2013 17:55:59 +0000 (10:55 -0700)
It sets the path to the xserver to run.

Signed-off-by: Maksim Melnikau <maxposedon@gmail.com>
man/weston.ini.man
src/xwayland/launcher.c

index 9c22b3f..79743f0 100644 (file)
@@ -77,6 +77,7 @@ The section headers are:
 .BR "input-method   " "Onscreen keyboard input"
 .BR "keyboard       " "Keyboard layouts"
 .BR "terminal       " "Terminal application options"
+.BR "xwayland       " "XWayland options"
 .fi
 .RE
 .PP
@@ -357,6 +358,12 @@ sets the size of the terminal font (unsigned integer).
 The terminal shell (string). Sets the $TERM variable.
 .RE
 .RE
+.SH "XWAYLAND SECTION"
+.TP 7
+.BI "path=" "/usr/bin/Xorg"
+sets the path to the xserver to run (string).
+.RE
+.RE
 .SH "SEE ALSO"
 .BR weston (1),
 .BR weston-launch (1),
index b639479..8d8e060 100644 (file)
@@ -42,6 +42,8 @@ weston_xserver_handle_event(int listen_fd, uint32_t mask, void *data)
        struct weston_xserver *wxs = data;
        char display[8], s[8];
        int sv[2], client_fd;
+       char *xserver = NULL;
+       struct weston_config_section *section;
 
        if (socketpair(AF_UNIX, SOCK_STREAM | SOCK_CLOEXEC, 0, sv) < 0) {
                weston_log("socketpair failed\n");
@@ -62,8 +64,11 @@ weston_xserver_handle_event(int listen_fd, uint32_t mask, void *data)
 
                snprintf(display, sizeof display, ":%d", wxs->display);
 
-               if (execl(XSERVER_PATH,
-                         XSERVER_PATH,
+               section = weston_config_get_section(wxs->compositor->config, "xwayland", NULL, NULL);
+               weston_config_section_get_string(section, "path", &xserver, XSERVER_PATH);
+
+               if (execl(xserver,
+                         xserver,
                          display,
                          "-wayland",
                          "-rootless",
@@ -72,6 +77,7 @@ weston_xserver_handle_event(int listen_fd, uint32_t mask, void *data)
                          "-terminate",
                          NULL) < 0)
                        weston_log("exec failed: %m\n");
+               free(xserver);
                _exit(EXIT_FAILURE);
 
        default: