diff options
author | Drew DeVault <sir@cmpwn.com> | 2018-03-31 00:35:06 -0400 |
---|---|---|
committer | Drew DeVault <sir@cmpwn.com> | 2018-03-31 00:35:06 -0400 |
commit | 18173fb5ade5af0d09a3e270701207f55bb5f97e (patch) | |
tree | d4757df0da8c678464171a294f1ed02288b0733d | |
parent | Merge pull request #1676 from swaywm/swaybar-input (diff) | |
download | sway-18173fb5ade5af0d09a3e270701207f55bb5f97e.tar.gz sway-18173fb5ade5af0d09a3e270701207f55bb5f97e.tar.zst sway-18173fb5ade5af0d09a3e270701207f55bb5f97e.zip |
Free bar configs on reload and exit
-rw-r--r-- | sway/config.c | 17 | ||||
-rw-r--r-- | sway/config/bar.c | 2 |
2 files changed, 12 insertions, 7 deletions
diff --git a/sway/config.c b/sway/config.c index 347d9e73..e9e7057d 100644 --- a/sway/config.c +++ b/sway/config.c | |||
@@ -57,38 +57,41 @@ static void free_mode(struct sway_mode *mode) { | |||
57 | void free_config(struct sway_config *config) { | 57 | void free_config(struct sway_config *config) { |
58 | config_clear_handler_context(config); | 58 | config_clear_handler_context(config); |
59 | 59 | ||
60 | int i; | ||
61 | |||
62 | if (!config) { | 60 | if (!config) { |
63 | return; | 61 | return; |
64 | } | 62 | } |
65 | 63 | ||
66 | // TODO: handle all currently unhandled lists as we add implementations | 64 | // TODO: handle all currently unhandled lists as we add implementations |
67 | if (config->symbols) { | 65 | if (config->symbols) { |
68 | for (i = 0; i < config->symbols->length; i++) { | 66 | for (int i = 0; i < config->symbols->length; ++i) { |
69 | free_sway_variable(config->symbols->items[i]); | 67 | free_sway_variable(config->symbols->items[i]); |
70 | } | 68 | } |
71 | list_free(config->symbols); | 69 | list_free(config->symbols); |
72 | } | 70 | } |
73 | if (config->modes) { | 71 | if (config->modes) { |
74 | for (i = 0; i < config->modes->length; i++) { | 72 | for (int i = 0; i < config->modes->length; ++i) { |
75 | free_mode(config->modes->items[i]); | 73 | free_mode(config->modes->items[i]); |
76 | } | 74 | } |
77 | list_free(config->modes); | 75 | list_free(config->modes); |
78 | } | 76 | } |
79 | list_free(config->bars); | 77 | if (config->bars) { |
78 | for (int i = 0; i < config->bars->length; ++i) { | ||
79 | free_bar_config(config->bars->items[i]); | ||
80 | } | ||
81 | list_free(config->bars); | ||
82 | } | ||
80 | list_free(config->cmd_queue); | 83 | list_free(config->cmd_queue); |
81 | list_free(config->workspace_outputs); | 84 | list_free(config->workspace_outputs); |
82 | list_free(config->pid_workspaces); | 85 | list_free(config->pid_workspaces); |
83 | list_free(config->output_configs); | 86 | list_free(config->output_configs); |
84 | if (config->input_configs) { | 87 | if (config->input_configs) { |
85 | for (i = 0; i < config->input_configs->length; i++) { | 88 | for (int i = 0; i < config->input_configs->length; i++) { |
86 | free_input_config(config->input_configs->items[i]); | 89 | free_input_config(config->input_configs->items[i]); |
87 | } | 90 | } |
88 | list_free(config->input_configs); | 91 | list_free(config->input_configs); |
89 | } | 92 | } |
90 | if (config->seat_configs) { | 93 | if (config->seat_configs) { |
91 | for (i = 0; i < config->seat_configs->length; i++) { | 94 | for (int i = 0; i < config->seat_configs->length; i++) { |
92 | free_seat_config(config->seat_configs->items[i]); | 95 | free_seat_config(config->seat_configs->items[i]); |
93 | } | 96 | } |
94 | list_free(config->seat_configs); | 97 | list_free(config->seat_configs); |
diff --git a/sway/config/bar.c b/sway/config/bar.c index 48b2fc7c..2913f059 100644 --- a/sway/config/bar.c +++ b/sway/config/bar.c | |||
@@ -16,6 +16,7 @@ | |||
16 | #include "log.h" | 16 | #include "log.h" |
17 | 17 | ||
18 | static void terminate_swaybar(pid_t pid) { | 18 | static void terminate_swaybar(pid_t pid) { |
19 | wlr_log(L_DEBUG, "Terminating swaybar %d", pid); | ||
19 | int ret = kill(pid, SIGTERM); | 20 | int ret = kill(pid, SIGTERM); |
20 | if (ret != 0) { | 21 | if (ret != 0) { |
21 | wlr_log_errno(L_ERROR, "Unable to terminate swaybar %d", pid); | 22 | wlr_log_errno(L_ERROR, "Unable to terminate swaybar %d", pid); |
@@ -185,6 +186,7 @@ void invoke_swaybar(struct bar_config *bar) { | |||
185 | execvp(cmd[0], cmd); | 186 | execvp(cmd[0], cmd); |
186 | exit(1); | 187 | exit(1); |
187 | } | 188 | } |
189 | wlr_log(L_DEBUG, "Spawned swaybar %d", bar->pid); | ||
188 | close(filedes[0]); | 190 | close(filedes[0]); |
189 | ssize_t len; | 191 | ssize_t len; |
190 | if (read(filedes[1], &len, sizeof(int)) == sizeof(int)) { | 192 | if (read(filedes[1], &len, sizeof(int)) == sizeof(int)) { |