avoid redraw when there's no change - dmenu - dynamic menu | |
git clone git://git.suckless.org/dmenu | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
commit 6818e07291f3b2913e687c8ec3d3fe4711724050 | |
parent b43ec0577f2ad8ad33a0b893fe5360d966036786 | |
Author: NRK <[email protected]> | |
Date: Fri, 25 Mar 2022 22:51:45 +0100 | |
avoid redraw when there's no change | |
while i was timing the performance issue, i noticed that there was lots | |
of random redrawing going on. | |
turns out there were coming from here; if someone presses CTRL/ALT etc | |
without pressing anything else, nothing will be inserted, so nothing | |
will change. but the code will `break`, go down and do a needless redraw. | |
this patch changes it to simply return if the keypress iscntrl() | |
also avoid potential UB by casting *buf into an unsigned char. | |
Diffstat: | |
M dmenu.c | 5 +++-- | |
1 file changed, 3 insertions(+), 2 deletions(-) | |
--- | |
diff --git a/dmenu.c b/dmenu.c | |
@@ -415,8 +415,9 @@ keypress(XKeyEvent *ev) | |
switch(ksym) { | |
default: | |
insert: | |
- if (!iscntrl(*buf)) | |
- insert(buf, len); | |
+ if (iscntrl((unsigned char)*buf)) | |
+ return; | |
+ insert(buf, len); | |
break; | |
case XK_Delete: | |
case XK_KP_Delete: |