diff options
author | emersion <contact@emersion.fr> | 2017-12-13 21:47:37 +0100 |
---|---|---|
committer | emersion <contact@emersion.fr> | 2017-12-13 21:47:37 +0100 |
commit | ec2fd6e5c0217ae58a03eca1e83d85f02c739643 (patch) | |
tree | ff2a84f28a9ea88f698d5099e430e665f801d1f7 /sway/desktop/output.c | |
parent | a4619e98c462690f14baf5c0c72c25553e3c6d51 (diff) |
Handle output remove
Diffstat (limited to 'sway/desktop/output.c')
-rw-r--r-- | sway/desktop/output.c | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/sway/desktop/output.c b/sway/desktop/output.c index 2177ad74..ad843b31 100644 --- a/sway/desktop/output.c +++ b/sway/desktop/output.c @@ -123,5 +123,19 @@ void output_remove_notify(struct wl_listener *listener, void *data) { struct sway_server *server = wl_container_of(listener, server, output_remove); struct wlr_output *wlr_output = data; sway_log(L_DEBUG, "Output %p %s removed", wlr_output, wlr_output->name); - // TODO + + swayc_t *output_container = NULL; + for (int i = 0 ; i < root_container.children->length; ++i) { + swayc_t *child = root_container.children->items[i]; + if (child->type == C_OUTPUT && + child->sway_output->wlr_output == wlr_output) { + output_container = child; + break; + } + } + if (!output_container) { + return; + } + + destroy_output(output_container); } |