commit 77f96d704bd16b04fe731da815a4e76c4e62decb from: Hiltjo Posthuma date: Sat Sep 27 10:10:37 2025 UTC cleanup schemes and colors commit - d893c63cdd927c33b9b8c9bc52aaa284199a650a commit + 77f96d704bd16b04fe731da815a4e76c4e62decb blob - fd49549caf05f0329336679236ef124e0e7a1ee4 blob + 9bad959d0849fb4c00a486ce74c0eefc29236e3b --- dmenu.c +++ dmenu.c @@ -101,8 +101,10 @@ cleanup(void) size_t i; XUngrabKeyboard(dpy, CurrentTime); - for (i = 0; i < SchemeLast; i++) + for (i = 0; i < SchemeLast; i++) { + drw_scm_free(drw, scheme[i], 2); free(scheme[i]); + } for (i = 0; items && items[i].text; ++i) free(items[i].text); free(items); blob - c41e6aff094243c2c58bccf69283192f3db16939 blob + 98dbaa8304cc6303925ecf384a09cb9076c96349 --- drw.c +++ drw.c @@ -178,8 +178,7 @@ drw_clr_create(Drw *drw, Clr *dest, const char *clrnam die("error, cannot allocate color '%s'", clrname); } -/* Wrapper to create color schemes. The caller has to call free(3) on the - * returned color scheme when done using it. */ +/* Create color schemes. */ Clr * drw_scm_create(Drw *drw, const char *clrnames[], size_t clrcount) { @@ -187,7 +186,7 @@ drw_scm_create(Drw *drw, const char *clrnames[], size_ Clr *ret; /* need at least two colors for a scheme */ - if (!drw || !clrnames || clrcount < 2 || !(ret = ecalloc(clrcount, sizeof(XftColor)))) + if (!drw || !clrnames || clrcount < 2 || !(ret = ecalloc(clrcount, sizeof(Clr)))) return NULL; for (i = 0; i < clrcount; i++) @@ -196,6 +195,29 @@ drw_scm_create(Drw *drw, const char *clrnames[], size_ } void +drw_clr_free(Drw *drw, Clr *c) +{ + if (!drw || !c) + return; + + /* c is typedef XftColor Clr */ + XftColorFree(drw->dpy, DefaultVisual(drw->dpy, drw->screen), + DefaultColormap(drw->dpy, drw->screen), c); +} + +void +drw_scm_free(Drw *drw, Clr *scm, size_t clrcount) +{ + size_t i; + + if (!drw || !scm) + return; + + for (i = 0; i < clrcount; i++) + drw_clr_free(drw, &scm[i]); +} + +void drw_setfontset(Drw *drw, Fnt *set) { if (drw) blob - fd7631b2ba4a3b3b3734345afae2b80078a8e980 blob + 2ed77bee5a158e64d584890064b49cb0b2cc823e --- drw.h +++ drw.h @@ -40,7 +40,9 @@ void drw_font_getexts(Fnt *font, const char *text, uns /* Colorscheme abstraction */ void drw_clr_create(Drw *drw, Clr *dest, const char *clrname); +void drw_clr_free(Drw *drw, Clr *c); Clr *drw_scm_create(Drw *drw, const char *clrnames[], size_t clrcount); +void drw_scm_free(Drw *drw, Clr *scm, size_t clrcount); /* Cursor abstraction */ Cur *drw_cur_create(Drw *drw, int shape);