Run XFlush instead of XSync before starting main loop; fixes bug where rending of keys fails when used in conjunction w/ dwm dock patch - svkbd - simple virtual keyboard
 (HTM) git clone git://git.suckless.org/svkbd
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit edfd50cdcb093869a94b96c64348bd4e446a5a4b
 (DIR) parent 819f92950e14ca01e097fccfbf47f0039ccf4d90
 (HTM) Author: Miles Alan <m@milesalan.com>
       Date:   Sun,  2 Aug 2020 15:46:10 +0200
       
       Run XFlush instead of XSync before starting main loop; fixes bug where rending of keys fails when used in conjunction w/ dwm dock patch
       
       Diffstat:
         M svkbd.c                             |      25 ++++++++++++++++---------
       
       1 file changed, 16 insertions(+), 9 deletions(-)
       ---
 (DIR) diff --git a/svkbd.c b/svkbd.c
       @@ -258,7 +258,6 @@ drawkeyboard(void) {
                        if(keys[i].keysym != 0)
                                drawkey(&keys[i]);
                }
       -        XSync(dpy, False);
        }
        
        void
       @@ -459,16 +458,24 @@ run(void) {
                fd_set fds;
                struct timeval tv;
        
       +
                xfd = ConnectionNumber(dpy);
       -        FD_ZERO(&fds);
       -        FD_SET(xfd, &fds);
                tv.tv_usec = 0;
       -        tv.tv_sec = 1;
       +        tv.tv_sec = 2;
       +
       +        //XSync(dpy, False);
       +        XFlush(dpy);
       +
                while (running) {
       -                select(xfd + 1, &fds, NULL, NULL, &tv);
       -                XNextEvent(dpy, &ev);
       -                if(handler[ev.type]) {
       -                        (handler[ev.type])(&ev); /* call handler */
       +                FD_ZERO(&fds);
       +                FD_SET(xfd, &fds);
       +                if (select(xfd + 1, &fds, NULL, NULL, &tv)) {
       +                        while (XPending(dpy)) {
       +                                XNextEvent(dpy, &ev);
       +                                if(handler[ev.type]) {
       +                                        (handler[ev.type])(&ev); /* call handler */
       +                                }
       +                        }
                        }
                }
        }
       @@ -631,8 +638,8 @@ main(int argc, char *argv[]) {
                int i, xr, yr, bitm;
                unsigned int wr, hr;
        
       -        signal(SIGTERM, sigterm);
                memcpy(&keys, &keys_en, sizeof(keys_en));
       +        signal(SIGTERM, sigterm);
                for (i = 1; argv[i]; i++) {
                        if(!strcmp(argv[i], "-v")) {
                                die("svkbd-"VERSION", © 2006-2016 svkbd engineers,"