Handle output remove

This commit is contained in:
emersion 2017-12-13 21:47:37 +01:00
parent a4619e98c4
commit ec2fd6e5c0
No known key found for this signature in database
GPG key ID: 0FDE7BE0E88F5E48
2 changed files with 21 additions and 1 deletions

View file

@ -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 sway_server *server = wl_container_of(listener, server, output_remove);
struct wlr_output *wlr_output = data; struct wlr_output *wlr_output = data;
sway_log(L_DEBUG, "Output %p %s removed", wlr_output, wlr_output->name); 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);
} }

View file

@ -23,10 +23,16 @@ static void output_layout_change_notify(struct wl_listener *listener, void *data
for (int i = 0 ; i < root_container.children->length; ++i) { for (int i = 0 ; i < root_container.children->length; ++i) {
swayc_t *output_container = root_container.children->items[i]; swayc_t *output_container = root_container.children->items[i];
if (output_container->type != C_OUTPUT) {
continue;
}
struct sway_output *output = output_container->sway_output; struct sway_output *output = output_container->sway_output;
struct wlr_box *output_box = wlr_output_layout_get_box( struct wlr_box *output_box = wlr_output_layout_get_box(
root_container.sway_root->output_layout, output->wlr_output); root_container.sway_root->output_layout, output->wlr_output);
if (!output_box) {
continue;
}
output_container->x = output_box->x; output_container->x = output_box->x;
output_container->y = output_box->y; output_container->y = output_box->y;
output_container->width = output_box->width; output_container->width = output_box->width;