aboutsummaryrefslogtreecommitdiffstats
path: root/sway/tree/container.c
diff options
context:
space:
mode:
authorLibravatar Ryan Dwyer <ryandwyer1@gmail.com>2018-08-20 09:23:34 +1000
committerLibravatar Ryan Dwyer <ryandwyer1@gmail.com>2018-08-20 09:23:34 +1000
commita49e4b13bf16bda8f1877272e04935329bb682c2 (patch)
treeaf9630337cedbc0805567dfc6e612c1d7cb8c802 /sway/tree/container.c
parentSend output enter/leave events correctly (diff)
downloadsway-a49e4b13bf16bda8f1877272e04935329bb682c2.tar.gz
sway-a49e4b13bf16bda8f1877272e04935329bb682c2.tar.zst
sway-a49e4b13bf16bda8f1877272e04935329bb682c2.zip
Clean up tracked outputs when an output is destroyed
Diffstat (limited to 'sway/tree/container.c')
-rw-r--r--sway/tree/container.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/sway/tree/container.c b/sway/tree/container.c
index 80d3f524..b932925d 100644
--- a/sway/tree/container.c
+++ b/sway/tree/container.c
@@ -211,6 +211,14 @@ static struct sway_container *container_workspace_destroy(
211 return output; 211 return output;
212} 212}
213 213
214static void untrack_output(struct sway_container *con, void *data) {
215 struct sway_output *output = data;
216 int index = list_find(con->outputs, output);
217 if (index != -1) {
218 list_del(con->outputs, index);
219 }
220}
221
214static struct sway_container *container_output_destroy( 222static struct sway_container *container_output_destroy(
215 struct sway_container *output) { 223 struct sway_container *output) {
216 if (!sway_assert(output, "cannot destroy null output")) { 224 if (!sway_assert(output, "cannot destroy null output")) {
@@ -252,6 +260,8 @@ static struct sway_container *container_output_destroy(
252 } 260 }
253 } 261 }
254 262
263 root_for_each_container(untrack_output, output->sway_output);
264
255 wl_list_remove(&output->sway_output->mode.link); 265 wl_list_remove(&output->sway_output->mode.link);
256 wl_list_remove(&output->sway_output->transform.link); 266 wl_list_remove(&output->sway_output->transform.link);
257 wl_list_remove(&output->sway_output->scale.link); 267 wl_list_remove(&output->sway_output->scale.link);