diff options
-rw-r--r-- | include/sway/server.h | 1 | ||||
-rw-r--r-- | sway/config.c | 4 | ||||
-rw-r--r-- | sway/main.c | 9 | ||||
-rw-r--r-- | sway/server.c | 12 |
4 files changed, 20 insertions, 6 deletions
diff --git a/include/sway/server.h b/include/sway/server.h index a017d1c4..70bde6d4 100644 --- a/include/sway/server.h +++ b/include/sway/server.h | |||
@@ -56,6 +56,7 @@ struct sway_server server; | |||
56 | bool server_privileged_prepare(struct sway_server *server); | 56 | bool server_privileged_prepare(struct sway_server *server); |
57 | bool server_init(struct sway_server *server); | 57 | bool server_init(struct sway_server *server); |
58 | void server_fini(struct sway_server *server); | 58 | void server_fini(struct sway_server *server); |
59 | bool server_start_backend(struct sway_server *server); | ||
59 | void server_run(struct sway_server *server); | 60 | void server_run(struct sway_server *server); |
60 | 61 | ||
61 | void handle_new_output(struct wl_listener *listener, void *data); | 62 | void handle_new_output(struct wl_listener *listener, void *data); |
diff --git a/sway/config.c b/sway/config.c index c620e4c7..00500812 100644 --- a/sway/config.c +++ b/sway/config.c | |||
@@ -649,7 +649,6 @@ bool read_config(FILE *file, struct sway_config *config) { | |||
649 | } else { | 649 | } else { |
650 | res = config_command(expanded); | 650 | res = config_command(expanded); |
651 | } | 651 | } |
652 | free(expanded); | ||
653 | switch(res->status) { | 652 | switch(res->status) { |
654 | case CMD_FAILURE: | 653 | case CMD_FAILURE: |
655 | case CMD_INVALID: | 654 | case CMD_INVALID: |
@@ -660,7 +659,7 @@ bool read_config(FILE *file, struct sway_config *config) { | |||
660 | 659 | ||
661 | case CMD_DEFER: | 660 | case CMD_DEFER: |
662 | wlr_log(WLR_DEBUG, "Deferring command `%s'", line); | 661 | wlr_log(WLR_DEBUG, "Deferring command `%s'", line); |
663 | list_add(config->cmd_queue, strdup(line)); | 662 | list_add(config->cmd_queue, strdup(expanded)); |
664 | break; | 663 | break; |
665 | 664 | ||
666 | case CMD_BLOCK_COMMANDS: | 665 | case CMD_BLOCK_COMMANDS: |
@@ -693,6 +692,7 @@ bool read_config(FILE *file, struct sway_config *config) { | |||
693 | sizeof(config->handler_context)); | 692 | sizeof(config->handler_context)); |
694 | default:; | 693 | default:; |
695 | } | 694 | } |
695 | free(expanded); | ||
696 | free(line); | 696 | free(line); |
697 | free_cmd_results(res); | 697 | free_cmd_results(res); |
698 | } | 698 | } |
diff --git a/sway/main.c b/sway/main.c index 1a55b519..a20f1dac 100644 --- a/sway/main.c +++ b/sway/main.c | |||
@@ -429,9 +429,16 @@ int main(int argc, char **argv) { | |||
429 | 429 | ||
430 | security_sanity_check(); | 430 | security_sanity_check(); |
431 | 431 | ||
432 | config->active = true; | ||
433 | setenv("WAYLAND_DISPLAY", server.socket, true); | 432 | setenv("WAYLAND_DISPLAY", server.socket, true); |
433 | if (!terminate_request) { | ||
434 | if (!server_start_backend(&server)) { | ||
435 | sway_terminate(EXIT_FAILURE); | ||
436 | } | ||
437 | } | ||
438 | |||
439 | config->active = true; | ||
434 | // Execute commands until there are none left | 440 | // Execute commands until there are none left |
441 | wlr_log(WLR_DEBUG, "Running deferred commands"); | ||
435 | while (config->cmd_queue->length) { | 442 | while (config->cmd_queue->length) { |
436 | char *line = config->cmd_queue->items[0]; | 443 | char *line = config->cmd_queue->items[0]; |
437 | struct cmd_results *res = execute_command(line, NULL); | 444 | struct cmd_results *res = execute_command(line, NULL); |
diff --git a/sway/server.c b/sway/server.c index f904b177..ee71d538 100644 --- a/sway/server.c +++ b/sway/server.c | |||
@@ -137,13 +137,19 @@ void server_fini(struct sway_server *server) { | |||
137 | list_free(server->transactions); | 137 | list_free(server->transactions); |
138 | } | 138 | } |
139 | 139 | ||
140 | void server_run(struct sway_server *server) { | 140 | bool server_start_backend(struct sway_server *server) { |
141 | wlr_log(WLR_INFO, "Running compositor on wayland display '%s'", | 141 | wlr_log(WLR_INFO, "Starting backend on wayland display '%s'", |
142 | server->socket); | 142 | server->socket); |
143 | if (!wlr_backend_start(server->backend)) { | 143 | if (!wlr_backend_start(server->backend)) { |
144 | wlr_log(WLR_ERROR, "Failed to start backend"); | 144 | wlr_log(WLR_ERROR, "Failed to start backend"); |
145 | wlr_backend_destroy(server->backend); | 145 | wlr_backend_destroy(server->backend); |
146 | return; | 146 | return false; |
147 | } | 147 | } |
148 | return true; | ||
149 | } | ||
150 | |||
151 | void server_run(struct sway_server *server) { | ||
152 | wlr_log(WLR_INFO, "Running compositor on wayland display '%s'", | ||
153 | server->socket); | ||
148 | wl_display_run(server->wl_display); | 154 | wl_display_run(server->wl_display); |
149 | } | 155 | } |