Clean up tracked outputs when an output is destroyed

This commit is contained in:
Ryan Dwyer 2018-08-20 09:23:34 +10:00
parent 0f6d212629
commit a49e4b13bf
1 changed files with 10 additions and 0 deletions

View File

@ -211,6 +211,14 @@ static struct sway_container *container_workspace_destroy(
return output; return output;
} }
static void untrack_output(struct sway_container *con, void *data) {
struct sway_output *output = data;
int index = list_find(con->outputs, output);
if (index != -1) {
list_del(con->outputs, index);
}
}
static struct sway_container *container_output_destroy( static struct sway_container *container_output_destroy(
struct sway_container *output) { struct sway_container *output) {
if (!sway_assert(output, "cannot destroy null output")) { if (!sway_assert(output, "cannot destroy null output")) {
@ -252,6 +260,8 @@ static struct sway_container *container_output_destroy(
} }
} }
root_for_each_container(untrack_output, output->sway_output);
wl_list_remove(&output->sway_output->mode.link); wl_list_remove(&output->sway_output->mode.link);
wl_list_remove(&output->sway_output->transform.link); wl_list_remove(&output->sway_output->transform.link);
wl_list_remove(&output->sway_output->scale.link); wl_list_remove(&output->sway_output->scale.link);