From: Consolatis <35009135+Consolatis@users.noreply.github.com> Date: Wed, 24 Aug 2022 19:12:24 +0000 (+0200) Subject: Disconnect view from destroying output X-Git-Url: https://git.mdlowis.com/?a=commitdiff_plain;h=36b2a93a69200bb63f5edd91800abb93a2a786d3;p=proto%2Flabwc.git Disconnect view from destroying output Fixes #497 Reported-by @Flrian --- diff --git a/include/labwc.h b/include/labwc.h index deeaa5a9..490c7401 100644 --- a/include/labwc.h +++ b/include/labwc.h @@ -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); diff --git a/src/output.c b/src/output.c index 35da0890..d441e734 100644 --- a/src/output.c +++ b/src/output.c @@ -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); } diff --git a/src/view.c b/src/view.c index e50a18bf..a8c63b0e 100644 --- a/src/view.c +++ b/src/view.c @@ -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) {