layer-shell: fix commit handler (issue #71)

On commit, do not arrange layers unless the layer shell-specific state
changed or the layer was (un)mapped.

Chase swaywm/sway@5fd5d643 and swaywm/wlroots@754f40f9
This commit is contained in:
Johan Malm 2021-10-15 19:14:07 +01:00
parent b040838d6a
commit 73b8f06a26
2 changed files with 14 additions and 1 deletions

View file

@ -250,8 +250,20 @@ surface_commit_notify(struct wl_listener *listener, void *data)
{
struct lab_layer_surface *layer =
wl_container_of(listener, layer, surface_commit);
struct wlr_layer_surface_v1 *layer_surface = layer->layer_surface;
struct wlr_output *wlr_output = layer->layer_surface->output;
arrange_layers(output_from_wlr_output(layer->server, wlr_output));
if (!wlr_output) {
return;
}
if (layer_surface->current.committed
|| layer->mapped != layer_surface->mapped) {
layer->mapped = layer_surface->mapped;
struct output *output =
output_from_wlr_output(layer->server, wlr_output);
arrange_layers(output);
}
damage_all_outputs(layer->server);
}