summary refs log tree commit diff
path: root/client.c
diff options
context:
space:
mode:
authorokan <okan>2016-10-04 15:52:32 +0000
committerokan <okan>2016-10-04 15:52:32 +0000
commit5c13775d31ce277bba94c68daff12cf50224aba0 (patch)
tree210c8ac83b54ec23d1b2e0d6917ca7d7cf1d416a /client.c
parent9306c1fbd3e491b9dcdcbb8587460296843a10ce (diff)
downloadcwm-5c13775d31ce277bba94c68daff12cf50224aba0.tar.gz
cwm-5c13775d31ce277bba94c68daff12cf50224aba0.tar.xz
cwm-5c13775d31ce277bba94c68daff12cf50224aba0.zip
Calculate client nameqlen in client_setname(), the only place it's
needed/used.
Diffstat (limited to 'client.c')
-rw-r--r--client.c13
1 files changed, 7 insertions, 6 deletions
diff --git a/client.c b/client.c
index 1de9290..ce7392e 100644
--- a/client.c
+++ b/client.c
@@ -605,6 +605,7 @@ client_setname(struct client_ctx *cc)
 {
 	struct winname	*wn;
 	char		*newname;
+	int		 i = 0;
 
 	if (!xu_getstrprop(cc->win, ewmh[_NET_WM_NAME], &newname))
 		if (!xu_getstrprop(cc->win, XA_WM_NAME, &newname))
@@ -621,19 +622,19 @@ client_setname(struct client_ctx *cc)
 	wn = xmalloc(sizeof(*wn));
 	wn->name = newname;
 	TAILQ_INSERT_TAIL(&cc->nameq, wn, entry);
-	cc->nameqlen++;
 
 match:
 	cc->name = wn->name;
 
-	/* Now, do some garbage collection. */
-	if (cc->nameqlen > CLIENT_MAXNAMEQLEN) {
-		if ((wn = TAILQ_FIRST(&cc->nameq)) == NULL)
-			errx(1, "client_setname: window name queue empty");
+	/* Do some garbage collection. */
+	TAILQ_FOREACH(wn, &cc->nameq, entry)
+		i++;
+	if (i > Conf.nameqlen) {
+		wn = TAILQ_FIRST(&cc->nameq);
 		TAILQ_REMOVE(&cc->nameq, wn, entry);
 		free(wn->name);
 		free(wn);
-		cc->nameqlen--;
+		i--;
 	}
 }