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 | ||||
-rw-r--r-- | sway/tree/view.c | 6 |
5 files changed, 25 insertions, 7 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 bad2b7e6..89dfbf8c 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 | } |
diff --git a/sway/tree/view.c b/sway/tree/view.c index fc31699c..7881e6d7 100644 --- a/sway/tree/view.c +++ b/sway/tree/view.c | |||
@@ -564,7 +564,11 @@ void view_map(struct sway_view *view, struct wlr_surface *wlr_surface) { | |||
564 | } | 564 | } |
565 | focus = seat_get_focus_inactive(seat, workspace); | 565 | focus = seat_get_focus_inactive(seat, workspace); |
566 | } else { | 566 | } else { |
567 | // TODO: CT_ASSIGN_OUTPUT | 567 | // CT_ASSIGN_OUTPUT |
568 | struct sway_container *output = output_by_name(criteria->target); | ||
569 | if (output) { | ||
570 | focus = seat_get_focus_inactive(seat, output); | ||
571 | } | ||
568 | } | 572 | } |
569 | } | 573 | } |
570 | // If we're about to launch the view into the floating container, then | 574 | // If we're about to launch the view into the floating container, then |