summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2020-08-15 15:49:58 -0400
committerMarco Trevisan (TreviƱo) <mail@3v1n0.net>2021-05-05 16:38:25 +0200
commit1429598db2c01f62953de3b2bb37deb1abfcafaf (patch)
tree39f71d105daf4aee02a42375296123d66e36a966
parentc1821251e368025c5a7dea751e6be7d4cd8c1d4e (diff)
downloadpango-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)
-rw-r--r--pango/pangofc-fontmap.c19
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)
{