summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTimm Bäder <mail@baedert.org>2020-01-08 09:11:02 +0100
committerMatthias Clasen <mclasen@redhat.com>2020-01-10 14:06:55 -0500
commit723010ed09a0672d1d253f9d2751807db6ef45b6 (patch)
tree449a49b9102d990f5d24df784ca60613dd2533e8
parentf0affa8886d8b64f676f9411a7fecdd4b7e29752 (diff)
downloadgtk+-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.c12
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, &GTK_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 != &GTK_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 == &GTK_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 != &GTK_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 == &GTK_CSS_VALUE_CORNER, 0.0);