cssprovider: Don't lookup on empty css providers
authorTimm Bäder <mail@baedert.org>
Sat, 24 Aug 2019 08:35:53 +0000 (10:35 +0200)
committerTimm Bäder <mail@baedert.org>
Mon, 9 Sep 2019 15:36:24 +0000 (17:36 +0200)
This should not have a huge performance impact, but debugging is easier
if we don't lookup in empty css providers.

gtk/gtkcssprovider.c
gtk/gtkcssselector.c
gtk/gtkcssselectorprivate.h

index 32a098dc44fa2604d07ee06a8a70c41a384ea729..15279c039e8f8d468feb563b57472e0b6c9a99dd 100644 (file)
@@ -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)
     {
index 3a1b95dbf7c5231ea426208a68ecb57aa664928f..89ec18194fafcbd50abf2c6a5341db1205fd8f90 100644 (file)
@@ -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)
index 64eb13d709c1cc045c23305e931592c6bc33cfa1..6f35917c6e3a47c729f31180d56840f652c3ad34 100644 (file)
@@ -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);