~ruther/dwl

f8f94c97f5d324c8876e88d0d82fd518eca25b1b — Leonardo Hernández Hernández 2 years ago 1bb9c45
fix idle inhibitor check

previously we tried to get a client from the surface and then compare it with
the excluded surface, if we cannot get a client from the surface (e.g: a layer
surface) it just ignored all the next idle inhibitors no matter what

What I have should done is just checking if the excluded surface is equal to
the current idle inhibitor's surface and continue in case it is.
1 files changed, 4 insertions(+), 4 deletions(-)

M dwl.c
M dwl.c => dwl.c +4 -4
@@ 694,14 694,14 @@ chvt(const Arg *arg)
void
checkidleinhibitor(struct wlr_surface *exclude)
{
	Client *c, *w;
	int inhibited = 0;
	struct wlr_idle_inhibitor_v1 *inhibitor;
	wl_list_for_each(inhibitor, &idle_inhibit_mgr->inhibitors, link) {
		c = client_from_wlr_surface(inhibitor->surface);
		if (exclude && (!(w = client_from_wlr_surface(exclude)) || w == c))
		Client *c;
		if (exclude == inhibitor->surface)
			continue;
		if (!c || VISIBLEON(c, c->mon)) {
		if (!(c = client_from_wlr_surface(inhibitor->surface))
				|| VISIBLEON(c, c->mon)) {
			inhibited = 1;
			break;
		}

Do not follow this link