[gtk+] themingbackground: Avoid erroring cairo context



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]