aboutsummaryrefslogtreecommitdiff
path: root/dwm/drw.c
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--dwm/drw.c29
1 files changed, 26 insertions, 3 deletions
diff --git a/dwm/drw.c b/dwm/drw.c
index 2814114..a1f7661 100644
--- a/dwm/drw.c
+++ b/dwm/drw.c
@@ -181,8 +181,7 @@ drw_clr_create(Drw *drw, Clr *dest,const char *clrname, unsigned int alpha)
dest->pixel = (dest->pixel & 0x00FFFFFFU) | (alpha << 24);
}
-/* 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[], const unsigned int alphas[], size_t clrcount)
{
@@ -190,7 +189,7 @@ drw_scm_create(Drw *drw, const char *clrnames[], const unsigned int alphas[], si
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++)
@@ -199,6 +198,30 @@ drw_scm_create(Drw *drw, const char *clrnames[], const unsigned int alphas[], si
}
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]);
+ free(scm);
+}
+
+void
drw_setfontset(Drw *drw, Fnt *set)
{
if (drw)