diff options
author | Timm Bäder <mail@baedert.org> | 2017-10-19 15:22:00 +0200 |
---|---|---|
committer | Timm Bäder <mail@baedert.org> | 2017-10-20 14:56:29 +0200 |
commit | 99026d2df8ceb0989cfb0cafcfe91d73a5ef7f4e (patch) | |
tree | b821aa4000ad6b9f6742d856cb933b6e08650438 /gtk/gtkrenderbackground.c | |
parent | f5b0692cfc90423492d2b57d796b329e4739573c (diff) | |
download | gtk+-99026d2df8ceb0989cfb0cafcfe91d73a5ef7f4e.tar.gz |
renderbackground: Minimize style lookups
Move the early returns up so we don't look up all those css values for
no reason.
Diffstat (limited to 'gtk/gtkrenderbackground.c')
-rw-r--r-- | gtk/gtkrenderbackground.c | 32 |
1 files changed, 19 insertions, 13 deletions
diff --git a/gtk/gtkrenderbackground.c b/gtk/gtkrenderbackground.c index 8e87e9ebec..0d3f31a671 100644 --- a/gtk/gtkrenderbackground.c +++ b/gtk/gtkrenderbackground.c @@ -334,9 +334,9 @@ gtk_theming_background_paint_layer (GtkThemingBackground *bg, } static void -gtk_theming_background_snapshot_layer (GtkThemingBackground *bg, - guint idx, - GtkSnapshot *snapshot) +gtk_theming_background_snapshot_layer (const GtkThemingBackground *bg, + guint idx, + GtkSnapshot *snapshot) { GtkCssRepeatStyle hrepeat, vrepeat; const GtkCssValue *pos, *repeat; @@ -345,32 +345,38 @@ gtk_theming_background_snapshot_layer (GtkThemingBackground *bg, double image_width, image_height; double width, height; - pos = _gtk_css_array_value_get_nth (gtk_css_style_get_value (bg->style, GTK_CSS_PROPERTY_BACKGROUND_POSITION), idx); - repeat = _gtk_css_array_value_get_nth (gtk_css_style_get_value (bg->style, GTK_CSS_PROPERTY_BACKGROUND_REPEAT), idx); - hrepeat = _gtk_css_background_repeat_value_get_x (repeat); - vrepeat = _gtk_css_background_repeat_value_get_y (repeat); image = _gtk_css_image_value_get_image ( _gtk_css_array_value_get_nth ( gtk_css_style_get_value (bg->style, GTK_CSS_PROPERTY_BACKGROUND_IMAGE), idx)); + if (image == NULL) + return; + + pos = _gtk_css_array_value_get_nth (gtk_css_style_get_value (bg->style, GTK_CSS_PROPERTY_BACKGROUND_POSITION), idx); + repeat = _gtk_css_array_value_get_nth (gtk_css_style_get_value (bg->style, GTK_CSS_PROPERTY_BACKGROUND_REPEAT), idx); + hrepeat = _gtk_css_background_repeat_value_get_x (repeat); + vrepeat = _gtk_css_background_repeat_value_get_y (repeat); + + origin = &bg->boxes[ _gtk_css_area_value_get ( _gtk_css_array_value_get_nth ( gtk_css_style_get_value (bg->style, GTK_CSS_PROPERTY_BACKGROUND_ORIGIN), idx))]; - clip = &bg->boxes[ - _gtk_css_area_value_get ( - _gtk_css_array_value_get_nth ( - gtk_css_style_get_value (bg->style, GTK_CSS_PROPERTY_BACKGROUND_CLIP), - idx))]; width = origin->bounds.size.width; height = origin->bounds.size.height; - if (image == NULL || width <= 0 || height <= 0) + if (width <= 0 || height <= 0) return; + clip = &bg->boxes[ + _gtk_css_area_value_get ( + _gtk_css_array_value_get_nth ( + gtk_css_style_get_value (bg->style, GTK_CSS_PROPERTY_BACKGROUND_CLIP), + idx))]; + _gtk_css_bg_size_value_compute_size (_gtk_css_array_value_get_nth (gtk_css_style_get_value (bg->style, GTK_CSS_PROPERTY_BACKGROUND_SIZE), idx), image, width, |