aboutsummaryrefslogtreecommitdiffstats
path: root/sway
diff options
context:
space:
mode:
authorLibravatar Brian Ashworth <bosrsf04@gmail.com>2018-07-19 01:39:58 -0400
committerLibravatar Brian Ashworth <bosrsf04@gmail.com>2018-07-19 01:39:58 -0400
commitec652866060a178796d6dbb32bf7f0e2101e56c9 (patch)
tree7e30314466a00931c26899d28763c809cb790ef2 /sway
parentMerge pull request #2300 from emersion/override-redirect-updates (diff)
downloadsway-ec652866060a178796d6dbb32bf7f0e2101e56c9.tar.gz
sway-ec652866060a178796d6dbb32bf7f0e2101e56c9.tar.zst
sway-ec652866060a178796d6dbb32bf7f0e2101e56c9.zip
Fix deferred command handling
Diffstat (limited to 'sway')
-rw-r--r--sway/config.c4
-rw-r--r--sway/main.c9
-rw-r--r--sway/server.c12
3 files changed, 19 insertions, 6 deletions
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
140void server_run(struct sway_server *server) { 140bool 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
151void 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}