Lazy font unloading too.
authorChristoph Lohmann <20h@r-36.net>
Sat, 11 May 2013 19:59:55 +0000 (21:59 +0200)
committerChristoph Lohmann <20h@r-36.net>
Sat, 11 May 2013 19:59:55 +0000 (21:59 +0200)
st.c

diff --git a/st.c b/st.c
index 56955a3..8475878 100644 (file)
--- a/st.c
+++ b/st.c
@@ -369,6 +369,7 @@ static void xresettitle(void);
 static void xseturgency(int);
 static void xsetsel(char*);
 static void xtermclear(int, int, int, int);
+static void xunloadfont(Font *f);
 static void xunloadfonts(void);
 static void xresize(int, int);
 
@@ -2733,6 +2734,14 @@ xloadfontset(Font *f) {
        return 0;
 }
 
+void
+xunloadfont(Font *f) {
+       XftFontClose(xw.dpy, f->match);
+       FcPatternDestroy(f->pattern);
+       if(f->set)
+               FcFontSetDestroy(f->set);
+}
+
 void
 xunloadfonts(void) {
        int i, ip;
@@ -2749,18 +2758,10 @@ xunloadfonts(void) {
        frccur = -1;
        frclen = 0;
 
-       XftFontClose(xw.dpy, dc.font.match);
-       FcPatternDestroy(dc.font.pattern);
-       FcFontSetDestroy(dc.font.set);
-       XftFontClose(xw.dpy, dc.bfont.match);
-       FcPatternDestroy(dc.bfont.pattern);
-       FcFontSetDestroy(dc.bfont.set);
-       XftFontClose(xw.dpy, dc.ifont.match);
-       FcPatternDestroy(dc.ifont.pattern);
-       FcFontSetDestroy(dc.ifont.set);
-       XftFontClose(xw.dpy, dc.ibfont.match);
-       FcPatternDestroy(dc.ibfont.pattern);
-       FcFontSetDestroy(dc.ibfont.set);
+       xunloadfont(&dc.font);
+       xunloadfont(&dc.bfont);
+       xunloadfont(&dc.ifont);
+       xunloadfont(&dc.ibfont);
 }
 
 void