Got questions, comments, patches, etc.?
Contact Jason Woofenden
gitweb
/
st.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Lazy fontset loading.
[st.git]
/
st.c
diff --git
a/st.c
b/st.c
index
50090a4
..
56955a3
100644
(file)
--- a/
st.c
+++ b/
st.c
@@
-363,6
+363,7
@@
static void xloadcols(void);
static int xsetcolorname(int, const char *);
static int xloadfont(Font *, FcPattern *);
static void xloadfonts(char *, int);
static int xsetcolorname(int, const char *);
static int xloadfont(Font *, FcPattern *);
static void xloadfonts(char *, int);
+static int xloadfontset(Font *);
static void xsettitle(char *);
static void xresettitle(void);
static void xseturgency(int);
static void xsettitle(char *);
static void xresettitle(void);
static void xseturgency(int);
@@
-2643,16
+2644,12
@@
xloadfont(Font *f, FcPattern *pattern) {
if(!match)
return 1;
if(!match)
return 1;
- if(!(f->set = FcFontSort(0, match, FcTrue, 0, &result))) {
- FcPatternDestroy(match);
- return 1;
- }
-
if(!(f->match = XftFontOpenPattern(xw.dpy, match))) {
FcPatternDestroy(match);
return 1;
}
if(!(f->match = XftFontOpenPattern(xw.dpy, match))) {
FcPatternDestroy(match);
return 1;
}
+ f->set = NULL;
f->pattern = FcPatternDuplicate(pattern);
f->ascent = f->match->ascent;
f->pattern = FcPatternDuplicate(pattern);
f->ascent = f->match->ascent;
@@
-2727,6
+2724,15
@@
xloadfonts(char *fontstr, int fontsize) {
FcPatternDestroy(pattern);
}
FcPatternDestroy(pattern);
}
+int
+xloadfontset(Font *f) {
+ FcResult result;
+
+ if(!(f->set = FcFontSort(0, f->pattern, FcTrue, 0, &result)))
+ return 1;
+ return 0;
+}
+
void
xunloadfonts(void) {
int i, ip;
void
xunloadfonts(void) {
int i, ip;
@@
-2987,7
+2993,6
@@
xdraws(char *s, Glyph base, int x, int y, int charlen, int bytelen) {
r.width = width;
XftDrawSetClipRectangles(xw.draw, winx, winy, &r, 1);
r.width = width;
XftDrawSetClipRectangles(xw.draw, winx, winy, &r, 1);
- fcsets[0] = font->set;
for(xp = winx; bytelen > 0;) {
/*
* Search for the range in the to be printed string of glyphs
for(xp = winx; bytelen > 0;) {
/*
* Search for the range in the to be printed string of glyphs
@@
-3045,6
+3050,10
@@
xdraws(char *s, Glyph base, int x, int y, int charlen, int bytelen) {
/* Nothing was found. */
if(i >= frclen) {
/* Nothing was found. */
if(i >= frclen) {
+ if(!font->set)
+ xloadfontset(font);
+ fcsets[0] = font->set;
+
/*
* Nothing was found in the cache. Now use
* some dozen of Fontconfig calls to get the
/*
* Nothing was found in the cache. Now use
* some dozen of Fontconfig calls to get the