diff options
Diffstat (limited to 'sway/server.c')
-rw-r--r-- | sway/server.c | 30 |
1 files changed, 17 insertions, 13 deletions
diff --git a/sway/server.c b/sway/server.c index 4a74cfb5..b7ce4612 100644 --- a/sway/server.c +++ b/sway/server.c | |||
@@ -27,23 +27,14 @@ bool server_init(struct sway_server *server) { | |||
27 | server->data_device_manager = | 27 | server->data_device_manager = |
28 | wlr_data_device_manager_create(server->wl_display); | 28 | wlr_data_device_manager_create(server->wl_display); |
29 | 29 | ||
30 | const char *socket = wl_display_add_socket_auto(server->wl_display); | 30 | server->output_add.notify = output_add_notify; |
31 | if (!socket) { | 31 | wl_signal_add(&server->backend->events.output_add, &server->output_add); |
32 | sway_log_errno(L_ERROR, "Unable to open wayland socket"); | ||
33 | wlr_backend_destroy(server->backend); | ||
34 | return false; | ||
35 | } | ||
36 | 32 | ||
37 | sway_log(L_INFO, "Running compositor on wayland display '%s'", socket); | 33 | server->socket = wl_display_add_socket_auto(server->wl_display); |
38 | setenv("_WAYLAND_DISPLAY", socket, true); | 34 | if (!sway_assert(server->socket, "Unable to open wayland socket")) { |
39 | |||
40 | if (!wlr_backend_start(server->backend)) { | ||
41 | sway_log(L_ERROR, "Failed to start backend"); | ||
42 | wlr_backend_destroy(server->backend); | 35 | wlr_backend_destroy(server->backend); |
43 | return false; | 36 | return false; |
44 | } | 37 | } |
45 | |||
46 | setenv("WAYLAND_DISPLAY", socket, true); | ||
47 | return true; | 38 | return true; |
48 | } | 39 | } |
49 | 40 | ||
@@ -51,3 +42,16 @@ void server_fini(struct sway_server *server) { | |||
51 | // TODO WLR: tear down more stuff | 42 | // TODO WLR: tear down more stuff |
52 | wlr_backend_destroy(server->backend); | 43 | wlr_backend_destroy(server->backend); |
53 | } | 44 | } |
45 | |||
46 | void server_run(struct sway_server *server) { | ||
47 | sway_log(L_INFO, "Running compositor on wayland display '%s'", | ||
48 | server->socket); | ||
49 | setenv("_WAYLAND_DISPLAY", server->socket, true); | ||
50 | if (!sway_assert(wlr_backend_start(server->backend), | ||
51 | "Failed to start backend")) { | ||
52 | wlr_backend_destroy(server->backend); | ||
53 | return; | ||
54 | } | ||
55 | setenv("WAYLAND_DISPLAY", server->socket, true); | ||
56 | wl_display_run(server->wl_display); | ||
57 | } | ||