[pango/speed-up-format-filtering: 2/2] Don't call FcFontSetSort twice




commit c4ae4782053aa5e8d5b2e78b580bfd74aa9a038d
Author: Matthias Clasen <mclasen redhat com>
Date:   Sat Aug 15 15:49:58 2020 -0400

    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.

 pango/pangofc-fontmap.c | 19 ++++++++++++-------
 1 file changed, 12 insertions(+), 7 deletions(-)
---
diff --git a/pango/pangofc-fontmap.c b/pango/pangofc-fontmap.c
index 6d7ae3aaf..4c2aa094c 100644
--- a/pango/pangofc-fontmap.c
+++ b/pango/pangofc-fontmap.c
@@ -876,16 +876,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)
         {


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]