dwm

my fork of dwm
Index Commits Files Refs README LICENSE
commit cb3f58ad06993f7ef3a7d8f61468012e2b786cab
parent b69c870a3076d78ab595ed1cd4b41cf6b03b2610
Author: Anselm R Garbe <anselm@garbe.ca>
Date:   Sat,  2 Feb 2019 04:50:42 -0800

Prepare 6.2 release.

Diffstat:
MLICENSE | 2+-
Mconfig.mk | 2+-
Mdrw.c | 16+++++++++++++++-
3 files changed, 17 insertions(+), 3 deletions(-)
diff --git a/LICENSE b/LICENSE
@@ -1,6 +1,6 @@
 MIT/X Consortium License
 
-© 2006-2017 Anselm R Garbe <anselm@garbe.us>
+© 2006-2019 Anselm R Garbe <anselm@garbe.ca>
 © 2006-2009 Jukka Salmi <jukka at salmi dot ch>
 © 2006-2007 Sander van Dijk <a dot h dot vandijk at gmail dot com>
 © 2007-2011 Peter Hartlich <sgkkr at hartlich dot com>
diff --git a/config.mk b/config.mk
@@ -1,5 +1,5 @@
 # dwm version
-VERSION = 6.1
+VERSION = 6.2
 
 # Customize below to fit your system
 
diff --git a/drw.c b/drw.c
@@ -132,6 +132,19 @@ xfont_create(Drw *drw, const char *fontname, FcPattern *fontpattern)
         die("no font specified.");
     }
 
+    /* Do not allow using color fonts. This is a workaround for a BadLength
+     * error from Xft with color glyphs. Modelled on the Xterm workaround. See
+     * https://bugzilla.redhat.com/show_bug.cgi?id=1498269
+     * https://lists.suckless.org/dev/1701/30932.html
+     * https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=916349
+     * and lots more all over the internet.
+     */
+    FcBool iscol;
+    if(FcPatternGetBool(xfont->pattern, FC_COLOR, 0, &iscol) == FcResultMatch && iscol) {
+        XftFontClose(drw->dpy, xfont);
+        return NULL;
+    }
+
     font = ecalloc(1, sizeof(Fnt));
     font->xfont = xfont;
     font->pattern = pattern;
@@ -200,7 +213,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(Clr))))
+    if (!drw || !clrnames || clrcount < 2 || !(ret = ecalloc(clrcount, sizeof(XftColor))))
         return NULL;
 
     for (i = 0; i < clrcount; i++)
@@ -337,6 +350,7 @@ drw_text(Drw *drw, int x, int y, unsigned int w, unsigned int h, unsigned int lp
             fcpattern = FcPatternDuplicate(drw->fonts->pattern);
             FcPatternAddCharSet(fcpattern, FC_CHARSET, fccharset);
             FcPatternAddBool(fcpattern, FC_SCALABLE, FcTrue);
+            FcPatternAddBool(fcpattern, FC_COLOR, FcFalse);
 
             FcConfigSubstitute(NULL, fcpattern, FcMatchPattern);
             FcDefaultSubstitute(fcpattern);