diff options
author | NRK <nrk@disroot.org> | 2022-03-25 22:51:45 +0100 |
---|---|---|
committer | Hiltjo Posthuma <hiltjo@codemadness.org> | 2022-03-25 22:53:50 +0100 |
commit | 6818e07291f3b2913e687c8ec3d3fe4711724050 (patch) | |
tree | 172a6b01df1b605d648ecefdd26f9cc98ed2788d | |
parent | b43ec0577f2ad8ad33a0b893fe5360d966036786 (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
@@ -415,8 +415,9 @@ keypress(XKeyEvent *ev) | |||
415 | switch(ksym) { | 415 | switch(ksym) { |
416 | default: | 416 | default: |
417 | insert: | 417 | insert: |
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: |