[gtk/matthiasc/css-matching-4: 1/4] selector stats



commit bf371e94dfafa72620040277ae7c77bc0907590f
Author: Matthias Clasen <mclasen redhat com>
Date:   Sun Jan 19 09:04:29 2020 -0500

    selector stats

 gtk/gtkcssselector.c | 20 +++++++++++++++++++-
 gtk/gtkwindow.c      |  4 ++++
 2 files changed, 23 insertions(+), 1 deletion(-)
---
diff --git a/gtk/gtkcssselector.c b/gtk/gtkcssselector.c
index aabffb3e3e..50414edac3 100644
--- a/gtk/gtkcssselector.c
+++ b/gtk/gtkcssselector.c
@@ -171,11 +171,29 @@ gtk_css_selector_tree_found_match (const GtkCssSelectorTree  *tree,
     }
 }
 
+static int match_count;
+static int positive_match_count;
+
+void print_match_count (void);
+void print_match_count (void)
+{
+  g_print ("%d selector matches (%d positive)\n", match_count, positive_match_count);
+  match_count = 0;
+  positive_match_count = 0;
+}
+
 static inline gboolean
 gtk_css_selector_match (const GtkCssSelector *selector,
                         const GtkCssMatcher  *matcher)
 {
-  return selector->class->match_one (selector, matcher);
+  gboolean result;
+
+  result = selector->class->match_one (selector, matcher);
+
+  match_count++;
+  positive_match_count += result;
+
+  return result;
 }
 
 static inline gboolean
diff --git a/gtk/gtkwindow.c b/gtk/gtkwindow.c
index e390e6bca2..0ff22e59af 100644
--- a/gtk/gtkwindow.c
+++ b/gtk/gtkwindow.c
@@ -6008,11 +6008,15 @@ surface_size_changed (GtkWidget *widget,
   gtk_window_configure (GTK_WINDOW (widget), width, height);
 }
 
+extern void print_match_count (void);
+
 static gboolean
 surface_render (GdkSurface     *surface,
                 cairo_region_t *region,
                 GtkWidget      *widget)
 {
+  print_match_count ();
+
   gtk_widget_render (widget, surface, region);
   return TRUE;
 }


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