diff options
author | Benjamin Otte <otte@redhat.com> | 2016-04-21 22:28:40 +0200 |
---|---|---|
committer | Matthias Clasen <mclasen@redhat.com> | 2016-05-05 15:03:58 -0400 |
commit | 8efd10c9fdc2375230bca8fd33b8555853e9db68 (patch) | |
tree | 29000fdd684b2e28b5a00373cc5a8ee7b905ea62 | |
parent | 758e10ad41a300e6343f4cbc2c9da39f1373f7aa (diff) | |
download | gtk+-8efd10c9fdc2375230bca8fd33b8555853e9db68.tar.gz |
cssbordervalue: Avoid allocating new value if not needed
-rw-r--r-- | gtk/gtkcssbordervalue.c | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/gtk/gtkcssbordervalue.c b/gtk/gtkcssbordervalue.c index 0b68d86f7a..5140057289 100644 --- a/gtk/gtkcssbordervalue.c +++ b/gtk/gtkcssbordervalue.c @@ -48,28 +48,33 @@ gtk_css_value_border_compute (GtkCssValue *value, GtkCssStyle *style, GtkCssStyle *parent_style) { + GtkCssValue *values[4]; GtkCssValue *computed; gboolean changed = FALSE; guint i; - computed = _gtk_css_border_value_new (NULL, NULL, NULL, NULL); - computed->fill = value->fill; - for (i = 0; i < 4; i++) { if (value->values[i]) { - computed->values[i] = _gtk_css_value_compute (value->values[i], property_id, provider, style, parent_style); - changed |= (computed->values[i] != value->values[i]); + values[i] = _gtk_css_value_compute (value->values[i], property_id, provider, style, parent_style); + changed |= (values[i] != value->values[i]); } } if (!changed) { - _gtk_css_value_unref (computed); + for (i = 0; i < 4; i++) + { + if (values[i] != NULL) + _gtk_css_value_unref (values[i]); + } return _gtk_css_value_ref (value); } + computed = _gtk_css_border_value_new (values[0], values[1], values[2], values[3]); + computed->fill = value->fill; + return computed; } |