Signed-off-by: Ryo Munakata <ryomnk...@gmail.com>
---
 src/compositor.c | 66 +++++++++++++++++++++++++++++++++++---------------------
 1 file changed, 41 insertions(+), 25 deletions(-)

diff --git a/src/compositor.c b/src/compositor.c
index 20ff6b2..0ecae23 100644
--- a/src/compositor.c
+++ b/src/compositor.c
@@ -4279,6 +4279,42 @@ handle_primary_client_destroyed(struct wl_listener 
*listener, void *data)
        wl_display_terminate(wl_client_get_display(client));
 }
 
+static char *
+weston_choose_default_backend(void)
+{
+       char *backend = NULL;
+
+       if (getenv("WAYLAND_DISPLAY") || getenv("WAYLAND_SOCKET"))
+               backend = strdup("wayland-backend.so");
+       else if (getenv("DISPLAY"))
+               backend = strdup("x11-backend.so");
+       else
+               backend = strdup(WESTON_NATIVE_BACKEND);
+
+       return backend;
+}
+
+static int
+weston_create_listening_socket(struct wl_display *display, const char 
*socket_name)
+{
+       if (socket_name) {
+               if (wl_display_add_socket(display, socket_name)) {
+                       weston_log("fatal: failed to add socket: %m\n");
+                       return -1;
+               }
+       } else {
+               socket_name = wl_display_add_socket_auto(display);
+               if (!socket_name) {
+                       weston_log("fatal: failed to add socket: %m\n");
+                       return -1;
+               }
+       }
+
+       setenv("WAYLAND_DISPLAY", socket_name, 1);
+
+       return 0;
+}
+
 int main(int argc, char *argv[])
 {
        int ret = EXIT_SUCCESS;
@@ -4379,14 +4415,8 @@ int main(int argc, char *argv[])
                weston_config_section_get_string(section, "backend", &backend,
                                                 NULL);
 
-       if (!backend) {
-               if (getenv("WAYLAND_DISPLAY") || getenv("WAYLAND_SOCKET"))
-                       backend = strdup("wayland-backend.so");
-               else if (getenv("DISPLAY"))
-                       backend = strdup("x11-backend.so");
-               else
-                       backend = strdup(WESTON_NATIVE_BACKEND);
-       }
+       if (!backend)
+               backend = weston_choose_default_backend();
 
        backend_init = weston_load_module(backend, "backend_init");
        free(backend);
@@ -4438,23 +4468,9 @@ int main(int argc, char *argv[])
                        handle_primary_client_destroyed;
                wl_client_add_destroy_listener(primary_client,
                                               &primary_client_destroyed);
-       } else {
-               if (socket_name) {
-                       if (wl_display_add_socket(display, socket_name)) {
-                               weston_log("fatal: failed to add socket: %m\n");
-                               ret = EXIT_FAILURE;
-                               goto out;
-                       }
-               } else {
-                       socket_name = wl_display_add_socket_auto(display);
-                       if (!socket_name) {
-                               weston_log("fatal: failed to add socket: %m\n");
-                               ret = EXIT_FAILURE;
-                               goto out;
-                       }
-               }
-
-               setenv("WAYLAND_DISPLAY", socket_name, 1);
+       } else if (weston_create_listening_socket(display, socket_name)) {
+               ret = EXIT_FAILURE;
+               goto out;
        }
 
        if (option_shell)
-- 
2.1.0

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

Reply via email to