summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexander Larsson <alexl@redhat.com>2012-11-23 16:15:29 +0100
committerAlexander Larsson <alexl@redhat.com>2012-11-23 16:15:29 +0100
commit90bcb52293b3c733de7c0f551b1d865597d7fcd7 (patch)
tree11d6f5918c1b6c03dbc6d2b305ed878a75eff5c0
parent3b48e562dde532e8c8be4a67f4e62b5538b1dca1 (diff)
downloadgtk+-wip/css-optimize.tar.gz
css: Add debug output for the css rules treewip/css-optimize
-rw-r--r--gtk/gtkcssprovider.c29
1 files changed, 29 insertions, 0 deletions
diff --git a/gtk/gtkcssprovider.c b/gtk/gtkcssprovider.c
index 0477aac6bc..6de03e846f 100644
--- a/gtk/gtkcssprovider.c
+++ b/gtk/gtkcssprovider.c
@@ -2817,6 +2817,30 @@ compare_refs_by_flags (gconstpointer pa,
}
static void
+print_tree (GtkCssRulesetsTree *tree, int indent)
+{
+ if (tree == NULL)
+ return;
+
+ switch (tree->type)
+ {
+ case RULESETS_TREE_TYPE_RULES:
+ printf ("%*sCheck rules %p len %d\n", indent, "", tree->u.rules.rules, tree->u.rules.num_rules);
+ break;
+ case RULESETS_TREE_TYPE_STATE:
+ printf ("%*sMatch state 0x%x ->\n", indent, "", tree->u.state.state);
+ print_tree (tree->u.state.matched, indent + 4);
+ break;
+ case RULESETS_TREE_TYPE_CLASS:
+ printf ("%*sMatch class %s ->\n", indent, "", g_quark_to_string (tree->u.class.class));
+ print_tree (tree->u.class.matched, indent + 4);
+ break;
+ }
+
+ print_tree (tree->next, indent);
+}
+
+static void
gtk_css_provider_postprocess (GtkCssProvider *css_provider)
{
GtkCssProviderPrivate *priv = css_provider->priv;
@@ -2838,6 +2862,11 @@ gtk_css_provider_postprocess (GtkCssProvider *css_provider)
priv->rulesets);
priv->rulesets_tree = subdivide_by_state (priv, refs, 0, priv->rulesets->len, GTK_STATE_FLAG_BACKDROP);
+ if (g_getenv ("GTK_CSS_DEBUG_TREE"))
+ {
+ g_print ("Rulesets tree for proviced %p (%d rules)\n", css_provider, priv->rulesets->len);
+ print_tree (priv->rulesets_tree, 1);
+ }
}
static gboolean