diff options
author | Matthias Clasen <mclasen@redhat.com> | 2020-08-15 15:49:58 -0400 |
---|---|---|
committer | Marco Trevisan (TreviƱo) <mail@3v1n0.net> | 2021-05-05 16:38:25 +0200 |
commit | 1429598db2c01f62953de3b2bb37deb1abfcafaf (patch) | |
tree | 39f71d105daf4aee02a42375296123d66e36a966 /pango/pangofc-fontmap.c | |
parent | c1821251e368025c5a7dea751e6be7d4cd8c1d4e (diff) | |
download | pango-1429598db2c01f62953de3b2bb37deb1abfcafaf.tar.gz |
Don't call FcFontSetSort twice
We can do the format filtering on the unsorted
font lists. Sorting the same list twice may be
fast, but there's still some setup overhead.
(cherry-picked from commit c4ae4782)
Diffstat (limited to 'pango/pangofc-fontmap.c')
-rw-r--r-- | pango/pangofc-fontmap.c | 19 |
1 files changed, 12 insertions, 7 deletions
diff --git a/pango/pangofc-fontmap.c b/pango/pangofc-fontmap.c index a3440673..13334a44 100644 --- a/pango/pangofc-fontmap.c +++ b/pango/pangofc-fontmap.c @@ -867,16 +867,21 @@ pango_fc_patterns_get_font_pattern (PangoFcPatterns *pats, int i, gboolean *prep if (!pats->fontset) { FcResult result; - FcFontSet *fontset; - FcFontSet *filtered; + FcFontSet *filtered[2] = { NULL, }; + int i, n = 0; - fontset = FcFontSort (pats->fontmap->priv->config, pats->pattern, FcFalse, NULL, &result); - filtered = filter_fontset_by_format (fontset); - FcFontSetDestroy (fontset); + for (i = 0; i < 2; i++) + { + FcFontSet *fonts = FcConfigGetFonts (pats->fontmap->priv->config, i); + if (fonts) + filtered[n++] = filter_fontset_by_format (fonts); + } + + pats->fontset = FcFontSetSort (pats->fontmap->priv->config, filtered, n, pats->pattern, FcTrue, NULL, &result); - pats->fontset = FcFontSetSort (pats->fontmap->priv->config, &filtered, 1, pats->pattern, FcTrue, NULL, &result); + for (i = 0; i < n; i++) + FcFontSetDestroy (filtered[i]); - FcFontSetDestroy (filtered); if (pats->match) { |