[hackers] [dmenu] avoid redraw when there's no change || NRK

From: <git_AT_suckless.org>
Date: Fri, 25 Mar 2022 22:57:42 +0100 (CET)

commit 6818e07291f3b2913e687c8ec3d3fe4711724050
Author: NRK <nrk_AT_disroot.org>
AuthorDate: Fri Mar 25 22:51:45 2022 +0100
Commit: Hiltjo Posthuma <hiltjo_AT_codemadness.org>
CommitDate: Fri Mar 25 22:53:50 2022 +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.

diff --git a/dmenu.c b/dmenu.c
index 085dc29..19f6385 100644
--- a/dmenu.c
+++ b/dmenu.c
_AT_@ -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:
Received on Fri Mar 25 2022 - 22:57:42 CET

This archive was generated by hypermail 2.3.0 : Fri Mar 25 2022 - 23:00:35 CET