diff options
author | Xiao Pan <xyz@flylightning.xyz> | 2025-09-28 15:41:45 +0800 |
---|---|---|
committer | Xiao Pan <xyz@flylightning.xyz> | 2025-09-28 15:41:45 +0800 |
commit | b60e03be620e929a1248c93f8ae54d24505dac47 (patch) | |
tree | e18ec65c1196a764176a1db5642dd23b11b21c34 /drw.c | |
parent | ed2e5ce863571975b2734718b76a3c0ea6493af6 (diff) | |
parent | 93f26863d14666e56e992de3670a77178e66ddf2 (diff) |
Merge branch 'master' into fly
Diffstat (limited to 'drw.c')
-rw-r--r-- | drw.c | 28 |
1 files changed, 25 insertions, 3 deletions
@@ -178,8 +178,7 @@ drw_clr_create(Drw *drw, Clr *dest, const char *clrname) 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_t clrcount) 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_t clrcount) } 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) |