Introduction
Introduction Statistics Contact Development Disclaimer Help
cleanup schemes and colors - dmenu - dynamic menu
git clone git://git.suckless.org/dmenu
Log
Files
Refs
README
LICENSE
---
commit 77f96d704bd16b04fe731da815a4e76c4e62decb
parent d893c63cdd927c33b9b8c9bc52aaa284199a650a
Author: Hiltjo Posthuma <[email protected]>
Date: Sat, 27 Sep 2025 12:10:37 +0200
cleanup schemes and colors
Diffstat:
M dmenu.c | 4 +++-
M drw.c | 28 +++++++++++++++++++++++++---
M drw.h | 2 ++
3 files changed, 30 insertions(+), 4 deletions(-)
---
diff --git a/dmenu.c b/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);
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);
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.