diff options
| author | auric <104602845+ihateamongus@users.noreply.github.com> | 2025-09-07 17:08:01 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-09-07 17:08:01 -0500 |
| commit | 417c5740bc4cd96e053b5725589fe3c4a835a231 (patch) | |
| tree | fcf771779ae1dedaab2433d5242118e84c68f02b /dwm/dwm.c | |
| parent | c683be2f77a688e3ed162f97820a5c07f9d90a78 (diff) | |
| parent | 2eec1939699ed3fa9e6b3699c2899e0e94a9d978 (diff) | |
Merge pull request #3 from ihateamongus/codex/analyze-oldresources-folder-for-performance-yvoz5b
Resolved. May need tweaks.
Diffstat (limited to 'dwm/dwm.c')
| -rw-r--r-- | dwm/dwm.c | 50 |
1 files changed, 37 insertions, 13 deletions
@@ -34,6 +34,7 @@ #include <sys/mman.h> #include <sys/stat.h> #include <fcntl.h> +#include <sys/select.h> #include <X11/cursorfont.h> #include <X11/keysym.h> #include <X11/Xatom.h> @@ -671,15 +672,23 @@ createmon(void) static void updateaccent(void) { - if (!accentshm) return; + if (!accentshm) + return; uint32_t s1, s2; + char tmp[8]; do { s1 = accentshm->seq; - memcpy(accentcol, accentshm->color, 8); + memcpy(tmp, accentshm->color, 8); s2 = accentshm->seq; } while (s1 != s2); + if (tmp[0] != '#') + return; + memcpy(accentcol, tmp, 8); drw_clr_create(drw, &scheme[SchemeSel][ColBg], accentcol); drw_clr_create(drw, &scheme[SchemeSel][ColBorder], accentcol); + for (Monitor *m = mons; m; m = m->next) + if (m->sel) + XSetWindowBorder(dpy, m->sel->win, scheme[SchemeSel][ColBorder].pixel); } static void @@ -745,8 +754,7 @@ dirtomon(int dir) void drawbar(Monitor *m) { - updateaccent(); - int x, w, tw = 0; + int x, w, tw = 0; int boxs = drw->fonts->h / 9; int boxw = drw->fonts->h / 6 + 2; unsigned int i, occ = 0, urg = 0; @@ -799,10 +807,11 @@ drawbar(Monitor *m) void drawbars(void) { - Monitor *m; + Monitor *m; - for (m = mons; m; m = m->next) - drawbar(m); + updateaccent(); + for (m = mons; m; m = m->next) + drawbar(m); } void @@ -1438,12 +1447,27 @@ restack(Monitor *m) void run(void) { - XEvent ev; - /* main event loop */ - XSync(dpy, False); - while (running && !XNextEvent(dpy, &ev)) - if (handler[ev.type]) - handler[ev.type](&ev); /* call handler */ + XEvent ev; + int xfd; + fd_set fds; + struct timeval tv; + + XSync(dpy, False); + xfd = ConnectionNumber(dpy); + while (running) { + FD_ZERO(&fds); + FD_SET(xfd, &fds); + tv.tv_sec = 0; + tv.tv_usec = 50000; + if (select(xfd + 1, &fds, NULL, NULL, &tv) > 0) { + while (XPending(dpy)) { + XNextEvent(dpy, &ev); + if (handler[ev.type]) + handler[ev.type](&ev); /* call handler */ + } + } + drawbars(); + } } void |
