summaryrefslogtreecommitdiff
path: root/gtk/gtkcsslookup.c
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2020-01-24 22:52:38 -0500
committerMatthias Clasen <mclasen@redhat.com>2020-01-25 01:20:17 -0500
commit4ab0e7956eb90e9d99ba686117fb1896cfc4f31a (patch)
treee202d021e0ab270ad528e9610273d9a4926e53e8 /gtk/gtkcsslookup.c
parent1eec7362b91fe083599890e753e4398673b78994 (diff)
downloadgtk+-matthiasc/css-value-inner-loop.tar.gz
css: Reshuffle the inner loop of value computationmatthiasc/css-value-inner-loop
The loop over all properties in gtk_css_static_style_compute_values is the inner loop of the css value computation, we hit it thousands of times per frame. Rearrange things to make this faster, by avoiding function calls, pulling the section handling out of the separate loop, and handling the border-width special case in a neater way. Before: 50 runs, min 12.45, max 20.419, avg 15.9414 After: 50 runs, min 12.622, max 21.195, avg 15.0449
Diffstat (limited to 'gtk/gtkcsslookup.c')
-rw-r--r--gtk/gtkcsslookup.c38
1 files changed, 2 insertions, 36 deletions
diff --git a/gtk/gtkcsslookup.c b/gtk/gtkcsslookup.c
index cfe5bfc5c5..3869840f59 100644
--- a/gtk/gtkcsslookup.c
+++ b/gtk/gtkcsslookup.c
@@ -76,40 +76,6 @@ _gtk_css_lookup_set (GtkCssLookup *lookup,
lookup->values[id].value = value;
lookup->values[id].section = section;
lookup->n_set_values ++;
-}
-
-/**
- * _gtk_css_lookup_resolve:
- * @lookup: the lookup
- * @context: the context the values are resolved for
- * @values: a new #GtkCssStyle to be filled with the new properties
- *
- * Resolves the current lookup into a styleproperties object. This is done
- * by converting from the “winning declaration” to the “computed value”.
- *
- * XXX: This bypasses the notion of “specified value”. If this ever becomes
- * an issue, go fix it.
- **/
-void
-_gtk_css_lookup_resolve (GtkCssLookup *lookup,
- GtkStyleProvider *provider,
- GtkCssStaticStyle *style,
- GtkCssStyle *parent_style)
-{
- guint i;
-
- gtk_internal_return_if_fail (lookup != NULL);
- gtk_internal_return_if_fail (GTK_IS_STYLE_PROVIDER (provider));
- gtk_internal_return_if_fail (GTK_IS_CSS_STATIC_STYLE (style));
- gtk_internal_return_if_fail (parent_style == NULL || GTK_IS_CSS_STYLE (parent_style));
-
- for (i = 0; i < GTK_CSS_PROPERTY_N_PROPERTIES; i++)
- {
- gtk_css_static_style_compute_value (style,
- provider,
- parent_style,
- i,
- lookup->values[i].value,
- lookup->values[i].section);
- }
+ if (section)
+ lookup->has_section = TRUE;
}