[pango/pango-1-44: 18/31] Don't call FcFontSetSort twice




commit 1429598db2c01f62953de3b2bb37deb1abfcafaf
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.
    
    (cherry-picked from commit c4ae4782)

 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 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)
         {


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