[gtk] cssprovider: Don't lookup on empty css providers



commit d8df197489e7466414857164850b8c93c187bd21
Author: Timm Bäder <mail baedert org>
Date:   Sat Aug 24 10:35:53 2019 +0200

    cssprovider: Don't lookup on empty css providers
    
    This should not have a huge performance impact, but debugging is easier
    if we don't lookup in empty css providers.

 gtk/gtkcssprovider.c        | 3 +++
 gtk/gtkcssselector.c        | 6 ++++++
 gtk/gtkcssselectorprivate.h | 2 ++
 3 files changed, 11 insertions(+)
---
diff --git a/gtk/gtkcssprovider.c b/gtk/gtkcssprovider.c
index 32a098dc44..15279c039e 100644
--- a/gtk/gtkcssprovider.c
+++ b/gtk/gtkcssprovider.c
@@ -527,6 +527,9 @@ gtk_css_style_provider_lookup (GtkStyleProvider    *provider,
   int i;
   GPtrArray *tree_rules;
 
+  if (_gtk_css_selector_tree_is_empty (priv->tree))
+    return;
+
   tree_rules = _gtk_css_selector_tree_match_all (priv->tree, matcher);
   if (tree_rules)
     {
diff --git a/gtk/gtkcssselector.c b/gtk/gtkcssselector.c
index 3a1b95dbf7..89ec18194f 100644
--- a/gtk/gtkcssselector.c
+++ b/gtk/gtkcssselector.c
@@ -1885,6 +1885,12 @@ gtk_css_selector_tree_get_change (const GtkCssSelectorTree *tree,
   return change;
 }
 
+gboolean
+_gtk_css_selector_tree_is_empty (const GtkCssSelectorTree *tree)
+{
+  return tree == NULL;
+}
+
 GtkCssChange
 _gtk_css_selector_tree_get_change_all (const GtkCssSelectorTree *tree,
                                       const GtkCssMatcher *matcher)
diff --git a/gtk/gtkcssselectorprivate.h b/gtk/gtkcssselectorprivate.h
index 64eb13d709..6f35917c6e 100644
--- a/gtk/gtkcssselectorprivate.h
+++ b/gtk/gtkcssselectorprivate.h
@@ -47,6 +47,8 @@ GtkCssChange _gtk_css_selector_tree_get_change_all   (const GtkCssSelectorTree *
                                                      const GtkCssMatcher *matcher);
 void         _gtk_css_selector_tree_match_print      (const GtkCssSelectorTree *tree,
                                                      GString                  *str);
+gboolean     _gtk_css_selector_tree_is_empty         (const GtkCssSelectorTree *tree) G_GNUC_CONST;
+
 
 
 GtkCssSelectorTreeBuilder *_gtk_css_selector_tree_builder_new   (void);


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