Introduction
Introduction Statistics Contact Development Disclaimer Help
cleanup schemes and colors - dwm - dynamic window manager
git clone git://git.suckless.org/dwm
Log
Files
Refs
README
LICENSE
---
commit 93f26863d14666e56e992de3670a77178e66ddf2
parent 74edc27caa65aba9ea8d1fe03d26e3b449f79590
Author: Hiltjo Posthuma <[email protected]>
Date: Sat, 27 Sep 2025 12:10:17 +0200
cleanup schemes and colors
Diffstat:
M drw.c | 28 +++++++++++++++++++++++++---
M drw.h | 2 ++
M dwm.c | 4 +++-
3 files changed, 30 insertions(+), 4 deletions(-)
---
diff --git a/drw.c b/drw.c
@@ -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 clr…
Clr *ret;
/* need at least two colors for a scheme */
- if (!drw || !clrnames || clrcount < 2 || !(ret = ecalloc(clrcount, siz…
+ if (!drw || !clrnames || clrcount < 2 || !(ret = ecalloc(clrcount, siz…
return NULL;
for (i = 0; i < clrcount; i++)
@@ -196,6 +195,29 @@ drw_scm_create(Drw *drw, const char *clrnames[], size_t cl…
}
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)
diff --git a/drw.h b/drw.h
@@ -40,7 +40,9 @@ void drw_font_getexts(Fnt *font, const char *text, unsigned i…
/* 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);
diff --git a/dwm.c b/dwm.c
@@ -485,8 +485,10 @@ cleanup(void)
cleanupmon(mons);
for (i = 0; i < CurLast; i++)
drw_cur_free(drw, cursor[i]);
- for (i = 0; i < LENGTH(colors); i++)
+ for (i = 0; i < LENGTH(colors); i++) {
+ drw_scm_free(drw, scheme[i], 3);
free(scheme[i]);
+ }
free(scheme);
XDestroyWindow(dpy, wmcheckwin);
drw_free(drw);
You are viewing proxied material from suckless.org. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.