[gtk+] themingbackground: Avoid erroring cairo context
- From: Benjamin Otte <otte src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+] themingbackground: Avoid erroring cairo context
- Date: Fri, 23 Dec 2011 21:40:36 +0000 (UTC)
commit ab1699510ebfd4c04b06b7d0e2886e498ef3e2c3
Author: Benjamin Otte <otte redhat com>
Date: Fri Dec 23 22:23:40 2011 +0100
themingbackground: Avoid erroring cairo context
gtk/gtkthemingbackground.c | 25 ++++++++++++++-----------
1 files changed, 14 insertions(+), 11 deletions(-)
---
diff --git a/gtk/gtkthemingbackground.c b/gtk/gtkthemingbackground.c
index 75ef352..a525e18 100644
--- a/gtk/gtkthemingbackground.c
+++ b/gtk/gtkthemingbackground.c
@@ -304,9 +304,6 @@ _gtk_theming_background_paint (GtkThemingBackground *bg,
"background-repeat", &repeat,
NULL);
- /* Fill background color first */
- cairo_fill_preserve (cr);
-
if (cairo_pattern_get_surface (bg->pattern, &surface) != CAIRO_STATUS_SUCCESS)
surface = NULL;
@@ -327,16 +324,22 @@ _gtk_theming_background_paint (GtkThemingBackground *bg,
scale_height = bg->image_rect.height;
}
- cairo_translate (cr, bg->image_rect.x, bg->image_rect.y);
- cairo_scale (cr, scale_width, scale_height);
- cairo_set_source (cr, bg->pattern);
- cairo_scale (cr, 1.0 / scale_width, 1.0 / scale_height);
- cairo_translate (cr, -bg->image_rect.x, -bg->image_rect.y);
+ if (scale_width && scale_height)
+ {
+ /* Fill background color first */
+ cairo_fill_preserve (cr);
+
+ cairo_translate (cr, bg->image_rect.x, bg->image_rect.y);
+ cairo_scale (cr, scale_width, scale_height);
+ cairo_set_source (cr, bg->pattern);
+ cairo_scale (cr, 1.0 / scale_width, 1.0 / scale_height);
+ cairo_translate (cr, -bg->image_rect.x, -bg->image_rect.y);
- g_free (repeat);
+ g_free (repeat);
- cairo_pattern_destroy (bg->pattern);
- bg->pattern = NULL;
+ cairo_pattern_destroy (bg->pattern);
+ bg->pattern = NULL;
+ }
}
cairo_fill (cr);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]