svkbd

simple virtual keyboard
git clone git://git.suckless.org/svkbd
Log | Files | Refs | README | LICENSE

commit edfd50cdcb093869a94b96c64348bd4e446a5a4b
parent 819f92950e14ca01e097fccfbf47f0039ccf4d90
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:
Msvkbd.c | 25++++++++++++++++---------
1 file changed, 16 insertions(+), 9 deletions(-)

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,"