diff options
author | NRK <nrk@disroot.org> | 2022-03-25 22:51:45 +0100 |
---|---|---|
committer | rafa_99 <raroma09@gmail.com> | 2022-03-25 23:13:31 +0000 |
commit | 8877bc60f7e6cab133cbf780c3dcae69648a195c (patch) | |
tree | 3d4d443f130f1d026989a018860b4e9f5bc823ab | |
parent | 8182d53e2b5d361bb58b2db0b96f3ef6dd1fbae9 (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.c | 5 |
1 files changed, 3 insertions, 2 deletions
@@ -421,8 +421,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: |