Disconnect view from destroying output

Fixes #497

Reported-by @Flrian
This commit is contained in:
Consolatis 2022-08-24 21:12:24 +02:00 committed by Johan Malm
parent c1490b632d
commit 36b2a93a69
3 changed files with 16 additions and 0 deletions

View file

@ -445,6 +445,7 @@ void view_update_app_id(struct view *view);
void view_impl_map(struct view *view);
void view_adjust_size(struct view *view, int *w, int *h);
void view_on_output_destroy(struct view *view);
void view_destroy(struct view *view);
void foreign_toplevel_handle_create(struct view *view);

View file

@ -46,6 +46,14 @@ output_destroy_notify(struct wl_listener *listener, void *data)
wl_list_remove(&output->link);
wl_list_remove(&output->frame.link);
wl_list_remove(&output->destroy.link);
struct view *view;
struct server *server = output->server;
wl_list_for_each(view, &server->views, link) {
if (view->output == output) {
view_on_output_destroy(view);
}
}
free(output);
}

View file

@ -594,6 +594,13 @@ view_discover_output(struct view *view)
}
}
void
view_on_output_destroy(struct view *view)
{
view_output_leave(view, view->output->wlr_output);
view->output = NULL;
}
void
view_move_to_edge(struct view *view, const char *direction)
{