mirror of
https://github.com/labwc/labwc.git
synced 2026-03-01 01:40:24 -05:00
Revert "layers: arrange layers on destroy"
This reverts commit 7bf08af210.
This commit is contained in:
parent
d1f7d3a320
commit
cc0fe78ceb
3 changed files with 4 additions and 23 deletions
|
|
@ -12,8 +12,6 @@ struct lab_layer_surface {
|
||||||
struct wlr_layer_surface_v1 *layer_surface;
|
struct wlr_layer_surface_v1 *layer_surface;
|
||||||
struct wlr_scene_layer_surface_v1 *scene_layer_surface;
|
struct wlr_scene_layer_surface_v1 *scene_layer_surface;
|
||||||
struct server *server;
|
struct server *server;
|
||||||
struct output *output;
|
|
||||||
struct wlr_scene_tree *tree;
|
|
||||||
|
|
||||||
bool mapped;
|
bool mapped;
|
||||||
|
|
||||||
|
|
|
||||||
23
src/layers.c
23
src/layers.c
|
|
@ -45,13 +45,6 @@ arrange_one_layer(const struct wlr_box *full_area, struct wlr_box *usable_area,
|
||||||
{
|
{
|
||||||
struct wlr_scene_node *node;
|
struct wlr_scene_node *node;
|
||||||
wl_list_for_each(node, &tree->children, link) {
|
wl_list_for_each(node, &tree->children, link) {
|
||||||
/*
|
|
||||||
* Could be null during destruction when called from
|
|
||||||
* handle_node_destroy()
|
|
||||||
*/
|
|
||||||
if (!node->data) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
struct lab_layer_surface *surface = node_layer_surface_from_node(node);
|
struct lab_layer_surface *surface = node_layer_surface_from_node(node);
|
||||||
struct wlr_scene_layer_surface_v1 *scene = surface->scene_layer_surface;
|
struct wlr_scene_layer_surface_v1 *scene = surface->scene_layer_surface;
|
||||||
if (!scene->layer_surface->initialized) {
|
if (!scene->layer_surface->initialized) {
|
||||||
|
|
@ -126,7 +119,6 @@ handle_output_destroy(struct wl_listener *listener, void *data)
|
||||||
struct lab_layer_surface *layer =
|
struct lab_layer_surface *layer =
|
||||||
wl_container_of(listener, layer, output_destroy);
|
wl_container_of(listener, layer, output_destroy);
|
||||||
layer->scene_layer_surface->layer_surface->output = NULL;
|
layer->scene_layer_surface->layer_surface->output = NULL;
|
||||||
layer->output = NULL;
|
|
||||||
wlr_layer_surface_v1_destroy(layer->scene_layer_surface->layer_surface);
|
wlr_layer_surface_v1_destroy(layer->scene_layer_surface->layer_surface);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -336,16 +328,6 @@ handle_node_destroy(struct wl_listener *listener, void *data)
|
||||||
* focus to.
|
* focus to.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
|
||||||
* Nullify node descriptor early to avoid functions such as
|
|
||||||
* arrange_one_layer() trying to dereference it.
|
|
||||||
*/
|
|
||||||
layer->tree->node.data = NULL;
|
|
||||||
|
|
||||||
if (layer->output) {
|
|
||||||
output_update_usable_area(layer->output);
|
|
||||||
}
|
|
||||||
|
|
||||||
wl_list_remove(&layer->map.link);
|
wl_list_remove(&layer->map.link);
|
||||||
wl_list_remove(&layer->unmap.link);
|
wl_list_remove(&layer->unmap.link);
|
||||||
wl_list_remove(&layer->surface_commit.link);
|
wl_list_remove(&layer->surface_commit.link);
|
||||||
|
|
@ -361,6 +343,9 @@ handle_unmap(struct wl_listener *listener, void *data)
|
||||||
struct lab_layer_surface *layer = wl_container_of(listener, layer, unmap);
|
struct lab_layer_surface *layer = wl_container_of(listener, layer, unmap);
|
||||||
struct wlr_layer_surface_v1 *layer_surface =
|
struct wlr_layer_surface_v1 *layer_surface =
|
||||||
layer->scene_layer_surface->layer_surface;
|
layer->scene_layer_surface->layer_surface;
|
||||||
|
if (layer_surface->output) {
|
||||||
|
output_update_usable_area(layer_surface->output->data);
|
||||||
|
}
|
||||||
struct seat *seat = &layer->server->seat;
|
struct seat *seat = &layer->server->seat;
|
||||||
if (seat->focused_layer == layer_surface) {
|
if (seat->focused_layer == layer_surface) {
|
||||||
try_to_focus_next_layer_or_toplevel(layer->server);
|
try_to_focus_next_layer_or_toplevel(layer->server);
|
||||||
|
|
@ -590,7 +575,6 @@ handle_new_layer_surface(struct wl_listener *listener, void *data)
|
||||||
surface->layer_surface = layer_surface;
|
surface->layer_surface = layer_surface;
|
||||||
|
|
||||||
struct output *output = layer_surface->output->data;
|
struct output *output = layer_surface->output->data;
|
||||||
surface->output = output;
|
|
||||||
|
|
||||||
wlr_fractional_scale_v1_notify_scale(layer_surface->surface,
|
wlr_fractional_scale_v1_notify_scale(layer_surface->surface,
|
||||||
output->wlr_output->scale);
|
output->wlr_output->scale);
|
||||||
|
|
@ -605,7 +589,6 @@ handle_new_layer_surface(struct wl_listener *listener, void *data)
|
||||||
wlr_log(WLR_ERROR, "could not create layer surface");
|
wlr_log(WLR_ERROR, "could not create layer surface");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
surface->tree = surface->scene_layer_surface->tree;
|
|
||||||
|
|
||||||
/* In support of IME popup */
|
/* In support of IME popup */
|
||||||
layer_surface->surface->data = surface->scene_layer_surface->tree;
|
layer_surface->surface->data = surface->scene_layer_surface->tree;
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@ descriptor_destroy(struct node_descriptor *node_descriptor)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
wl_list_remove(&node_descriptor->destroy.link);
|
wl_list_remove(&node_descriptor->destroy.link);
|
||||||
zfree(node_descriptor);
|
free(node_descriptor);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue