summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLeonardo Hernández Hernández <leohdz172@protonmail.com>2022-09-02 16:54:53 -0500
committerLeonardo Hernández Hernández <leohdz172@protonmail.com>2022-09-02 16:54:53 -0500
commit40b1c0b849ee48c428f7f901afcdc67d20f3cf7c (patch)
tree71013abbd802abb9e1961c7e4d0a7a5abe3157b7
parentc017916d35795cf85e5181907f5e97a1d702612a (diff)
Revert "Revert "various improvements to layer surface""
This reverts commit c017916d35795cf85e5181907f5e97a1d702612a.
-rw-r--r--dwl.c38
1 files changed, 15 insertions, 23 deletions
diff --git a/dwl.c b/dwl.c
index a3b13b6..8556cba 100644
--- a/dwl.c
+++ b/dwl.c
@@ -783,25 +783,23 @@ commitlayersurfacenotify(struct wl_listener *listener, void *data)
{
LayerSurface *layersurface = wl_container_of(listener, layersurface, surface_commit);
struct wlr_layer_surface_v1 *wlr_layer_surface = layersurface->layer_surface;
- struct wlr_output *wlr_output = wlr_layer_surface->output;
- if (!wlr_output || !(layersurface->mon = wlr_output->data))
+ if (!layersurface->mon)
return;
- wlr_scene_node_reparent(layersurface->scene,
- layers[wlr_layer_surface->current.layer]);
+ if (layers[wlr_layer_surface->current.layer] != layersurface->scene) {
+ wlr_scene_node_reparent(layersurface->scene,
+ layers[wlr_layer_surface->current.layer]);
+ wl_list_remove(&layersurface->link);
+ wl_list_insert(&layersurface->mon->layers[wlr_layer_surface->current.layer],
+ &layersurface->link);
+ }
if (wlr_layer_surface->current.committed == 0
&& layersurface->mapped == wlr_layer_surface->mapped)
return;
-
layersurface->mapped = wlr_layer_surface->mapped;
- if (layers[wlr_layer_surface->current.layer] != layersurface->scene) {
- wl_list_remove(&layersurface->link);
- wl_list_insert(&layersurface->mon->layers[wlr_layer_surface->current.layer],
- &layersurface->link);
- }
arrangelayers(layersurface->mon);
}
@@ -868,14 +866,13 @@ createlayersurface(struct wl_listener *listener, void *data)
LayerSurface *layersurface;
struct wlr_layer_surface_v1_state old_state;
- if (!wlr_layer_surface->output) {
+ if (!wlr_layer_surface->output)
wlr_layer_surface->output = selmon->wlr_output;
- }
layersurface = ecalloc(1, sizeof(LayerSurface));
layersurface->type = LayerShell;
LISTEN(&wlr_layer_surface->surface->events.commit,
- &layersurface->surface_commit, commitlayersurfacenotify);
+ &layersurface->surface_commit, commitlayersurfacenotify);
LISTEN(&wlr_layer_surface->events.destroy, &layersurface->destroy,
destroylayersurfacenotify);
LISTEN(&wlr_layer_surface->events.map, &layersurface->map,
@@ -884,8 +881,8 @@ createlayersurface(struct wl_listener *listener, void *data)
unmaplayersurfacenotify);
layersurface->layer_surface = wlr_layer_surface;
- wlr_layer_surface->data = layersurface;
layersurface->mon = wlr_layer_surface->output->data;
+ wlr_layer_surface->data = layersurface;
layersurface->scene = wlr_layer_surface->surface->data =
wlr_scene_subsurface_tree_create(layers[wlr_layer_surface->pending.layer],
@@ -1076,11 +1073,8 @@ destroylayersurfacenotify(struct wl_listener *listener, void *data)
wl_list_remove(&layersurface->unmap.link);
wl_list_remove(&layersurface->surface_commit.link);
wlr_scene_node_destroy(layersurface->scene);
- if (layersurface->layer_surface->output) {
- if ((layersurface->mon = layersurface->layer_surface->output->data))
- arrangelayers(layersurface->mon);
- layersurface->layer_surface->output = NULL;
- }
+ if (layersurface->mon)
+ arrangelayers(layersurface->mon);
free(layersurface);
}
@@ -1380,10 +1374,8 @@ killclient(const Arg *arg)
void
maplayersurfacenotify(struct wl_listener *listener, void *data)
{
- LayerSurface *layersurface = wl_container_of(listener, layersurface, map);
- layersurface->mon = layersurface->layer_surface->output->data;
- wlr_surface_send_enter(layersurface->layer_surface->surface,
- layersurface->mon->wlr_output);
+ LayerSurface *l = wl_container_of(listener, l, map);
+ wlr_surface_send_enter(l->layer_surface->surface, l->mon->wlr_output);
motionnotify(0);
}