Run XFlush instead of XSync before starting main loop; fixes bug where rending … | |
git clone git://git.suckless.org/svkbd | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
commit edfd50cdcb093869a94b96c64348bd4e446a5a4b | |
parent 819f92950e14ca01e097fccfbf47f0039ccf4d90 | |
Author: Miles Alan <[email protected]> | |
Date: Sun, 2 Aug 2020 15:46:10 +0200 | |
Run XFlush instead of XSync before starting main loop; fixes bug where rending … | |
Diffstat: | |
M svkbd.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 handl… | |
+ } | |
+ } | |
} | |
} | |
} | |
@@ -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," |