diff options
| author | Leonardo Hernández Hernández <leohdz172@protonmail.com> | 2022-08-31 16:05:19 -0500 | 
|---|---|---|
| committer | Leonardo Hernández Hernández <leohdz172@protonmail.com> | 2022-08-31 16:05:19 -0500 | 
| commit | c017916d35795cf85e5181907f5e97a1d702612a (patch) | |
| tree | a8dbf0c6fecfa48e2e042272345ac3f113d8fac0 /dwl.c | |
| parent | 226051974060746d02d787ac1ef70b6267ee51b4 (diff) | |
Revert "various improvements to layer surface"
see https://github.com/djpohly/dwl/issues/289#issuecomment-1231287114
This reverts commit 226051974060746d02d787ac1ef70b6267ee51b4.
Diffstat (limited to 'dwl.c')
| -rw-r--r-- | dwl.c | 38 | 
1 files changed, 23 insertions, 15 deletions
| @@ -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);  } | 
