[pango/speed-up-format-filtering] fontconfig: Add some trace marks



commit 296af805b66637710397402fcbd82bb8957bd749
Author: Matthias Clasen <mclasen redhat com>
Date:   Wed Aug 19 16:02:53 2020 -0400

    fontconfig: Add some trace marks
    
    Add trace marks around the expensive fontconfig
    calls, and for when we are waiting on them.

 pango/pangofc-fontmap.c | 29 +++++++++++++++++++++++------
 1 file changed, 23 insertions(+), 6 deletions(-)
---
diff --git a/pango/pangofc-fontmap.c b/pango/pangofc-fontmap.c
index eb43473e..fc35550f 100644
--- a/pango/pangofc-fontmap.c
+++ b/pango/pangofc-fontmap.c
@@ -54,6 +54,7 @@
 #include "pango-impl-utils.h"
 #include "pango-enum-types.h"
 #include "pango-coverage-private.h"
+#include "pango-trace-private.h"
 #include <hb-ft.h>
 
 
@@ -832,12 +833,16 @@ match_in_thread (GTask        *task,
   ThreadData *td = task_data;
   FcResult result;
   FcPattern *match;
+  gint64 before = PANGO_TRACE_CURRENT_TIME;
 
   match = FcFontSetMatch (td->config,
                           td->sets, td->nsets,
                           td->pattern,
                           &result);
 
+  pango_trace_mark (before, PANGO_TRACE_CURRENT_TIME - before,
+                    "Pango", "FcFontSetMatch", NULL);
+
   g_mutex_lock (&td->patterns->mutex);
   td->patterns->match = match;
   g_cond_signal (&td->patterns->cond);
@@ -853,6 +858,7 @@ sort_in_thread (GTask        *task,
   ThreadData *td = task_data;
   FcResult result;
   FcFontSet *fontset;
+  gint64 before = PANGO_TRACE_CURRENT_TIME;
 
   fontset = FcFontSetSort (td->config,
                            td->sets, td->nsets,
@@ -861,6 +867,9 @@ sort_in_thread (GTask        *task,
                            NULL,
                            &result);
 
+  pango_trace_mark (before, PANGO_TRACE_CURRENT_TIME - before,
+                    "Pango", "FcFontSetSort", NULL);
+
   g_mutex_lock (&td->patterns->mutex);
   td->patterns->fontset = fontset;
   g_cond_signal (&td->patterns->cond);
@@ -1003,6 +1012,7 @@ pango_fc_patterns_get_font_pattern (PangoFcPatterns *pats, int i, gboolean *prep
     {
       FcPattern *match;
       FcFontSet *fontset;
+      gint64 before = PANGO_TRACE_CURRENT_TIME;
 
       g_mutex_lock (&pats->mutex);
 
@@ -1014,6 +1024,9 @@ pango_fc_patterns_get_font_pattern (PangoFcPatterns *pats, int i, gboolean *prep
 
       g_mutex_unlock (&pats->mutex);
 
+      pango_trace_mark (before, PANGO_TRACE_CURRENT_TIME - before,
+                       "Pango", "wait for FcFontMatch", NULL);
+
       if (match)
         {
           *prepare = FALSE;
@@ -1031,6 +1044,7 @@ pango_fc_patterns_get_font_pattern (PangoFcPatterns *pats, int i, gboolean *prep
   else
     {
       FcFontSet *fontset;
+      gint64 before = PANGO_TRACE_CURRENT_TIME;
 
       g_mutex_lock (&pats->mutex);
 
@@ -1041,6 +1055,9 @@ pango_fc_patterns_get_font_pattern (PangoFcPatterns *pats, int i, gboolean *prep
 
       g_mutex_unlock (&pats->mutex);
 
+      pango_trace_mark (before, PANGO_TRACE_CURRENT_TIME - before,
+                       "Pango", "wait for FcFontSort", NULL);
+
       if (fontset && i < fontset->nfont)
         {
           *prepare = TRUE;
@@ -1327,12 +1344,12 @@ init_in_thread (GTask        *task,
                 gpointer      task_data,
                 GCancellable *cancellable)
 {
-  gint64 before = g_get_monotonic_time ();
+  gint64 before = PANGO_TRACE_CURRENT_TIME;
 
   FcInit ();
 
-  g_print ("FcInit took %.1f milliseconds\n",
-           (g_get_monotonic_time () - before)/((double)G_TIME_SPAN_MILLISECOND));
+  pango_trace_mark (before, PANGO_TRACE_CURRENT_TIME - before,
+                    "Pango", "FcInit", NULL);
 
   g_mutex_lock (&fc_init_mutex);
   fc_initialized = TRUE;
@@ -1343,15 +1360,15 @@ init_in_thread (GTask        *task,
 static void
 wait_for_fc_init (void)
 {
-  gint64 before = g_get_monotonic_time ();
+  gint64 before = PANGO_TRACE_CURRENT_TIME;
 
   g_mutex_lock (&fc_init_mutex);
   while (!fc_initialized)
     g_cond_wait (&fc_init_cond, &fc_init_mutex);
   g_mutex_unlock (&fc_init_mutex);
 
-  g_print ("wait_for_fc_init took %.1f milliseconds\n",
-           (g_get_monotonic_time () - before)/((double)G_TIME_SPAN_MILLISECOND));
+  pango_trace_mark (before, PANGO_TRACE_CURRENT_TIME - before,
+                    "Pango", "wait for FcInit", NULL);
 }
 
 static void


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