view: Add view_evacuate_region() helper

v2: Modify asserts as suggested by Consolatis
This commit is contained in:
John Lindgren 2023-02-16 11:54:18 -05:00 committed by Consolatis
parent 0ca6c4c763
commit d2fae39fe3
3 changed files with 13 additions and 6 deletions

View file

@ -162,6 +162,7 @@ void view_reload_ssd(struct view *view);
void view_impl_map(struct view *view);
void view_adjust_size(struct view *view, int *w, int *h);
void view_evacuate_region(struct view *view);
void view_on_output_destroy(struct view *view);
void view_destroy(struct view *view);

View file

@ -219,12 +219,7 @@ regions_evacuate_output(struct output *output)
wl_list_for_each(view, &output->server->views, link) {
wl_list_for_each(region, &output->regions, link) {
if (view->tiled_region == region) {
if (!view->tiled_region_evacuate) {
view->tiled_region_evacuate =
xstrdup(region->name);
}
/* Prevent carrying around a dangling pointer */
view->tiled_region = NULL;
view_evacuate_region(view);
break;
}
}

View file

@ -774,6 +774,17 @@ view_discover_output(struct view *view)
view->output = view_output(view);
}
void
view_evacuate_region(struct view *view)
{
assert(view);
assert(view->tiled_region);
if (!view->tiled_region_evacuate) {
view->tiled_region_evacuate = xstrdup(view->tiled_region->name);
}
view->tiled_region = NULL;
}
void
view_on_output_destroy(struct view *view)
{