diff options
author | Timm Bäder <mail@baedert.org> | 2020-01-08 09:11:02 +0100 |
---|---|---|
committer | Matthias Clasen <mclasen@redhat.com> | 2020-01-10 14:06:55 -0500 |
commit | 723010ed09a0672d1d253f9d2751807db6ef45b6 (patch) | |
tree | 449a49b9102d990f5d24df784ca60613dd2533e8 | |
parent | f0affa8886d8b64f676f9411a7fecdd4b7e29752 (diff) | |
download | gtk+-723010ed09a0672d1d253f9d2751807db6ef45b6.tar.gz |
csscornervalue: Accept other values if x == y
Most corners are square, so x == y. In that case, just accept either of
them. This makes the corner value unnecessary.
In fact none of the corner values in the widget-factory are needed, so
this spares us around 500 corner value allocations.
css value stats before:
GtkCssBgSizeValue: 23
GtkCssIdentValue: 25
GtkCssPositionValue: 81
GtkCssCornerValue: 556
GtkCssArrayValue: 143
GtkCssStringValue: 33
GtkCssPaletteValue: 29
GtkCssImageValue: 2765
GtkCssColorValue: 1452
GtkCssFilterValue: 3
GtkCssRgbaValue: 1092
GtkCssShadowValue: 708
GtkCssEaseValue: 33
GtkCssBorderValue: 2
GtkCssTransformValue: 11
GtkCssDimensionValue: 882
GtkCssShadowsValue: 584
SUM: 8428
and after:
GtkCssColorValue: 1452
GtkCssFilterValue: 3
GtkCssRgbaValue: 1092
GtkCssShadowValue: 708
GtkCssEaseValue: 33
GtkCssBorderValue: 2
GtkCssTransformValue: 11
GtkCssDimensionValue: 882
GtkCssShadowsValue: 584
GtkCssBgSizeValue: 23
GtkCssIdentValue: 25
GtkCssPositionValue: 81
GtkCssArrayValue: 143
GtkCssStringValue: 33
GtkCssPaletteValue: 29
GtkCssImageValue: 2765
SUM: 7872
8428 to 7872 is a 556 reduction (6.5%)
-rw-r--r-- | gtk/gtkcsscornervalue.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/gtk/gtkcsscornervalue.c b/gtk/gtkcsscornervalue.c index 49b6bd1605..4edbfff76a 100644 --- a/gtk/gtkcsscornervalue.c +++ b/gtk/gtkcsscornervalue.c @@ -115,6 +115,12 @@ _gtk_css_corner_value_new (GtkCssValue *x, { GtkCssValue *result; + if (x == y) + { + _gtk_css_value_unref (y); + return _gtk_css_value_ref (x); + } + result = _gtk_css_value_new (GtkCssValue, >K_CSS_VALUE_CORNER); result->x = x; result->y = y; @@ -156,6 +162,9 @@ double _gtk_css_corner_value_get_x (const GtkCssValue *corner, double one_hundred_percent) { + if (corner->class != >K_CSS_VALUE_CORNER) + return _gtk_css_number_value_get (corner, one_hundred_percent); + g_return_val_if_fail (corner != NULL, 0.0); g_return_val_if_fail (corner->class == >K_CSS_VALUE_CORNER, 0.0); @@ -166,6 +175,9 @@ double _gtk_css_corner_value_get_y (const GtkCssValue *corner, double one_hundred_percent) { + if (corner->class != >K_CSS_VALUE_CORNER) + return _gtk_css_number_value_get (corner, one_hundred_percent); + g_return_val_if_fail (corner != NULL, 0.0); g_return_val_if_fail (corner->class == >K_CSS_VALUE_CORNER, 0.0); |