summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenjamin Otte <otte@redhat.com>2016-04-21 22:28:40 +0200
committerMatthias Clasen <mclasen@redhat.com>2016-05-05 15:03:58 -0400
commit8efd10c9fdc2375230bca8fd33b8555853e9db68 (patch)
tree29000fdd684b2e28b5a00373cc5a8ee7b905ea62
parent758e10ad41a300e6343f4cbc2c9da39f1373f7aa (diff)
downloadgtk+-8efd10c9fdc2375230bca8fd33b8555853e9db68.tar.gz
cssbordervalue: Avoid allocating new value if not needed
-rw-r--r--gtk/gtkcssbordervalue.c17
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;
}