~ruther/dwl

c017916d35795cf85e5181907f5e97a1d702612a — Leonardo Hernández Hernández 2 years ago 2260519
Revert "various improvements to layer surface"

see https://github.com/djpohly/dwl/issues/289#issuecomment-1231287114

This reverts commit 226051974060746d02d787ac1ef70b6267ee51b4.
1 files changed, 23 insertions(+), 15 deletions(-)

M dwl.c
M dwl.c => dwl.c +23 -15
@@ 783,23 783,25 @@ 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 (!layersurface->mon)
	if (!wlr_output || !(layersurface->mon = wlr_output->data))
		return;

	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);
	}
	wlr_scene_node_reparent(layersurface->scene,
			layers[wlr_layer_surface->current.layer]);

	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);
}



@@ 866,13 868,14 @@ 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,


@@ 881,8 884,8 @@ createlayersurface(struct wl_listener *listener, void *data)
			unmaplayersurfacenotify);

	layersurface->layer_surface = wlr_layer_surface;
	layersurface->mon = wlr_layer_surface->output->data;
	wlr_layer_surface->data = layersurface;
	layersurface->mon = wlr_layer_surface->output->data;

	layersurface->scene = wlr_layer_surface->surface->data =
			wlr_scene_subsurface_tree_create(layers[wlr_layer_surface->pending.layer],


@@ 1073,8 1076,11 @@ 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->mon)
		arrangelayers(layersurface->mon);
	if (layersurface->layer_surface->output) {
		if ((layersurface->mon = layersurface->layer_surface->output->data))
			arrangelayers(layersurface->mon);
		layersurface->layer_surface->output = NULL;
	}
	free(layersurface);
}



@@ 1374,8 1380,10 @@ killclient(const Arg *arg)
void
maplayersurfacenotify(struct wl_listener *listener, void *data)
{
	LayerSurface *l = wl_container_of(listener, l, map);
	wlr_surface_send_enter(l->layer_surface->surface, l->mon->wlr_output);
	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);
	motionnotify(0);
}


Do not follow this link