~ruther/dwl

2d9d758c8dec083178ff78b154da784b97260bd1 — Leonardo Hernández Hernández 2 years ago 332ceb7
stop trying resize clients during commitnotify()

instead resize them in configurex11()
1 files changed, 10 insertions(+), 18 deletions(-)

M dwl.c
M dwl.c => dwl.c +10 -18
@@ 836,12 836,6 @@ void
commitnotify(struct wl_listener *listener, void *data)
{
	Client *c = wl_container_of(listener, c, commit);
	struct wlr_box box = {0};
	client_get_geometry(c, &box);

	if (c->mon && !wlr_box_empty(&box) && (box.width != c->geom.width - 2 * c->bw
			|| box.height != c->geom.height - 2 * c->bw))
		arrange(c->mon);

	/* mark a pending resize as completed */
	if (c->resize && (c->resize <= c->surface.xdg->current.configure_serial


@@ 1033,6 1027,7 @@ createnotify(struct wl_listener *listener, void *data)
	LISTEN(&xdg_surface->events.map, &c->map, mapnotify);
	LISTEN(&xdg_surface->events.unmap, &c->unmap, unmapnotify);
	LISTEN(&xdg_surface->events.destroy, &c->destroy, destroynotify);
	LISTEN(&xdg_surface->surface->events.commit, &c->commit, commitnotify);
	LISTEN(&xdg_surface->toplevel->events.set_title, &c->set_title, updatetitle);
	LISTEN(&xdg_surface->toplevel->events.request_fullscreen, &c->fullscreen,
			fullscreennotify);


@@ 1139,8 1134,9 @@ destroynotify(struct wl_listener *listener, void *data)
		wl_list_remove(&c->configure.link);
		wl_list_remove(&c->set_hints.link);
		wl_list_remove(&c->activate.link);
	}
	} else
#endif
	{ wl_list_remove(&c->commit.link); }
	free(c);
}



@@ 1428,14 1424,8 @@ mapnotify(struct wl_listener *listener, void *data)
	c->scene_surface = c->type == XDGShell
			? wlr_scene_xdg_surface_create(c->scene, c->surface.xdg)
			: wlr_scene_subsurface_tree_create(c->scene, client_surface(c));
	if (client_surface(c)) {
	if (client_surface(c))
		client_surface(c)->data = c->scene;
		/* Ideally we should do this in createnotify{,x11} but at that moment
		* wlr_xwayland_surface doesn't have wlr_surface yet
		*/
		LISTEN(&client_surface(c)->events.commit, &c->commit, commitnotify);

	}
	c->scene->data = c->scene_surface->data = c;

#ifdef XWAYLAND


@@ 2416,7 2406,6 @@ unmapnotify(struct wl_listener *listener, void *data)
		wl_list_remove(&c->flink);
	}

	wl_list_remove(&c->commit.link);
	wlr_scene_node_destroy(c->scene);
	printstatus();
	motionnotify(0);


@@ 2592,9 2581,12 @@ void
configurex11(struct wl_listener *listener, void *data)
{
	Client *c = wl_container_of(listener, c, configure);
	struct wlr_xwayland_surface_configure_event *event = data;
	wlr_xwayland_surface_configure(c->surface.xwayland,
			event->x, event->y, event->width, event->height);
	struct wlr_xwayland_surface_configure_event *e = data;
	if (c->isfloating)
		resize(c, (struct wlr_box){.x = e->x, .y = e->y,
				.width = e->width, .height = e->height}, 0);
	else
		arrange(c->mon);
}

void

Do not follow this link