summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTimm Bäder <mail@baedert.org>2017-10-19 15:22:00 +0200
committerTimm Bäder <mail@baedert.org>2017-10-20 14:56:29 +0200
commit99026d2df8ceb0989cfb0cafcfe91d73a5ef7f4e (patch)
treeb821aa4000ad6b9f6742d856cb933b6e08650438
parentf5b0692cfc90423492d2b57d796b329e4739573c (diff)
downloadgtk+-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.
-rw-r--r--gtk/gtkrenderbackground.c32
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,