Call xsetenv() in main process instead of child
[st.git] / x.c
diff --git a/x.c b/x.c
index fbfd350..df2a88c 100644 (file)
--- a/x.c
+++ b/x.c
@@ -89,6 +89,7 @@ static void xdrawcursor(void);
 static int xgeommasktogravity(int);
 static int xloadfont(Font *, FcPattern *);
 static void xunloadfont(Font *);
+static void xsetenv(void);
 
 static void expose(XEvent *);
 static void visibility(XEvent *);
@@ -1092,6 +1093,9 @@ xmakeglyphfontspecs(XftGlyphFontSpec *specs, const Glyph *glyphs, int len, int x
 
                        frc[frclen].font = XftFontOpenPattern(xw.dpy,
                                        fontpattern);
+                       if (!frc[frclen].font)
+                               die("XftFontOpenPattern failed seeking fallback font: %s\n",
+                                       strerror(errno));
                        frc[frclen].flags = frcflags;
                        frc[frclen].unicodep = rune;
 
@@ -1186,20 +1190,22 @@ xdrawglyphfontspecs(const XftGlyphFontSpec *specs, Glyph base, int len, int x, i
                }
        }
 
-       if (base.mode & ATTR_REVERSE) {
-               temp = fg;
-               fg = bg;
-               bg = temp;
-       }
-
        if ((base.mode & ATTR_BOLD_FAINT) == ATTR_FAINT) {
                colfg.red = fg->color.red / 2;
                colfg.green = fg->color.green / 2;
                colfg.blue = fg->color.blue / 2;
+               colfg.alpha = fg->color.alpha;
                XftColorAllocValue(xw.dpy, xw.vis, xw.cmap, &colfg, &revfg);
                fg = &revfg;
        }
 
+
+       if (base.mode & ATTR_REVERSE) {
+               temp = fg;
+               fg = bg;
+               bg = temp;
+       }
+
        if (base.mode & ATTR_BLINK && term.mode & MODE_BLINK)
                fg = bg;
 
@@ -1482,12 +1488,6 @@ xbell(int vol)
        XkbBell(xw.dpy, xw.win, vol, (Atom)NULL);
 }
 
-unsigned long
-xwinid(void)
-{
-       return xw.win;
-}
-
 void
 focus(XEvent *ev)
 {
@@ -1760,6 +1760,7 @@ run:
        XSetLocaleModifiers("");
        tnew(MAX(cols, 1), MAX(rows, 1));
        xinit();
+       xsetenv();
        selinit();
        run();