aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/config.h2
-rw-r--r--sway/config.c20
-rw-r--r--sway/container.c4
3 files changed, 18 insertions, 8 deletions
diff --git a/include/config.h b/include/config.h
index 1f25a0cd..b89ad553 100644
--- a/include/config.h
+++ b/include/config.h
@@ -185,6 +185,8 @@ int sway_mouse_binding_cmp_buttons(const void *a, const void *b);
void free_sway_mouse_binding(struct sway_mouse_binding *smb);
void load_swaybars(swayc_t *output, int output_idx);
+void terminate_swaybars(list_t *pids);
+void terminate_swaybg(pid_t pid);
/**
* Allocate and initialize default bar configuration.
diff --git a/sway/config.c b/sway/config.c
index 23fe5388..928d35a8 100644
--- a/sway/config.c
+++ b/sway/config.c
@@ -389,7 +389,7 @@ static void invoke_swaybar(swayc_t *output, struct bar_config *bar, int output_i
list_add(output->bar_pids, pid);
}
-static void terminate_swaybars(list_t *pids) {
+void terminate_swaybars(list_t *pids) {
int i, ret;
pid_t *pid;
for (i = 0; i < pids->length; ++i) {
@@ -411,6 +411,16 @@ static void terminate_swaybars(list_t *pids) {
}
}
+void terminate_swaybg(pid_t pid) {
+ int ret = kill(pid, SIGTERM);
+ if (ret != 0) {
+ sway_log(L_ERROR, "Unable to terminate swaybg [pid: %d]", pid);
+ } else {
+ int status;
+ waitpid(pid, &status, 0);
+ }
+}
+
void load_swaybars(swayc_t *output, int output_idx) {
// Check for bars
list_t *bars = create_list();
@@ -496,13 +506,7 @@ void apply_output_config(struct output_config *oc, swayc_t *output) {
if (oc && oc->background) {
if (output->bg_pid != 0) {
- int ret = kill(output->bg_pid, SIGTERM);
- if (ret != 0) {
- sway_log(L_ERROR, "Unable to terminate swaybg [pid: %d]", output->bg_pid);
- } else {
- int status;
- waitpid(output->bg_pid, &status, 0);
- }
+ terminate_swaybg(output->bg_pid);
}
sway_log(L_DEBUG, "Setting background for output %d to %s", output_i, oc->background);
diff --git a/sway/container.c b/sway/container.c
index 395eb04d..b85d2114 100644
--- a/sway/container.c
+++ b/sway/container.c
@@ -61,8 +61,12 @@ static void free_swayc(swayc_t *cont) {
free(cont->app_id);
}
if (cont->bar_pids) {
+ terminate_swaybars(cont->bar_pids);
free_flat_list(cont->bar_pids);
}
+ if (cont->bg_pid != 0) {
+ terminate_swaybg(cont->bg_pid);
+ }
free(cont);
}