diff options
author | Matthias Clasen <mclasen@redhat.com> | 2020-01-10 10:04:22 -0500 |
---|---|---|
committer | Matthias Clasen <mclasen@redhat.com> | 2020-01-10 14:50:13 -0500 |
commit | 4f6ea7c418fb06c88c425012e3541305906f048d (patch) | |
tree | b04320f8e2ef2854e619ac07848eeb8d285f76be /gtk/gtkcssarrayvalue.c | |
parent | ba8f39a90a4a2c4380c46e848f892cdb33ffac0c (diff) | |
download | gtk+-matthiasc/css-values.tar.gz |
wip: static valuesmatthiasc/css-values
Determine whether a css value is 'static' at creation
time. Static values don't need to have compute() called,
since their value is always the same, so we can just
ref them.
Diffstat (limited to 'gtk/gtkcssarrayvalue.c')
-rw-r--r-- | gtk/gtkcssarrayvalue.c | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/gtk/gtkcssarrayvalue.c b/gtk/gtkcssarrayvalue.c index 02ece79fbd..889c4da01b 100644 --- a/gtk/gtkcssarrayvalue.c +++ b/gtk/gtkcssarrayvalue.c @@ -392,14 +392,27 @@ _gtk_css_array_value_new_from_array (GtkCssValue **values, guint n_values) { GtkCssValue *result; + gboolean is_static; + int i; g_return_val_if_fail (values != NULL, NULL); g_return_val_if_fail (n_values > 0, NULL); if (n_values == 1) return values[0]; - + + is_static = TRUE; + for (i = 0; i < n_values; i++) + { + if (!values[i]->is_static) + { + is_static = FALSE; + break; + } + } + result = _gtk_css_value_alloc (>K_CSS_VALUE_ARRAY, sizeof (GtkCssValue) + sizeof (GtkCssValue *) * (n_values - 1)); + result->is_static = is_static; result->n_values = n_values; memcpy (&result->values[0], values, sizeof (GtkCssValue *) * n_values); |