aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNRK <nrk@disroot.org>2022-03-25 22:51:45 +0100
committerHiltjo Posthuma <hiltjo@codemadness.org>2022-03-25 22:53:50 +0100
commit6818e07291f3b2913e687c8ec3d3fe4711724050 (patch)
tree172a6b01df1b605d648ecefdd26f9cc98ed2788d
parentb43ec0577f2ad8ad33a0b893fe5360d966036786 (diff)
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.
-rw-r--r--dmenu.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/dmenu.c b/dmenu.c
index 085dc29..19f6385 100644
--- a/dmenu.c
+++ b/dmenu.c
@@ -415,8 +415,9 @@ keypress(XKeyEvent *ev)
415 switch(ksym) { 415 switch(ksym) {
416 default: 416 default:
417insert: 417insert:
418 if (!iscntrl(*buf)) 418 if (iscntrl((unsigned char)*buf))
419 insert(buf, len); 419 return;
420 insert(buf, len);
420 break; 421 break;
421 case XK_Delete: 422 case XK_Delete:
422 case XK_KP_Delete: 423 case XK_KP_Delete: