summaryrefslogtreecommitdiffstats
path: root/desktop/dwm/patches/0001-Prepare-6.2-release-2.patch
blob: b62c3180e320add41737730c040b0e7d6c31c021 (plain)
From cb3f58ad06993f7ef3a7d8f61468012e2b786cab Mon Sep 17 00:00:00 2001
From: Anselm R Garbe <anselm@garbe.ca>
Date: Sat, 2 Feb 2019 04:50:42 -0800
Subject: [PATCH] Prepare 6.2 release.
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="------------false"

This is a multi-part message in MIME format.
--------------false
Content-Type: text/plain; charset=UTF-8; format=fixed
Content-Transfer-Encoding: 8bit

---
 LICENSE   |  2 +-
 config.mk |  2 +-
 drw.c     | 16 +++++++++++++++-
 3 files changed, 17 insertions(+), 3 deletions(-)


--------------false
Content-Type: text/x-patch; name="0001-Prepare-6.2-release.patch"
Content-Transfer-Encoding: 8bit
Content-Disposition: attachment; filename="0001-Prepare-6.2-release.patch"

diff --git a/LICENSE b/LICENSE
index 954cdc9..d221f09 100644
--- 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/drw.c b/drw.c
index c638323..8fd1ca4 100644
--- 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);

--------------false--