diff options
author | Ryan Dwyer <ryandwyer1@gmail.com> | 2018-08-20 09:23:34 +1000 |
---|---|---|
committer | Ryan Dwyer <ryandwyer1@gmail.com> | 2018-08-20 09:23:34 +1000 |
commit | a49e4b13bf16bda8f1877272e04935329bb682c2 (patch) | |
tree | af9630337cedbc0805567dfc6e612c1d7cb8c802 /sway/tree/container.c | |
parent | Send output enter/leave events correctly (diff) | |
download | sway-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.c | 10 |
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 | ||
214 | static 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 | |||
214 | static struct sway_container *container_output_destroy( | 222 | static 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); |