]> Pileus Git - ~andy/gtk/blobdiff - gdk/gdkwindow.c
Update to changed cairo interface.
[~andy/gtk] / gdk / gdkwindow.c
index 145e27519413e936488e2ae3ceb31bf463e1887b..5e1c7dc3f2239adc008997c6b468a1e391428d11 100644 (file)
@@ -1735,8 +1735,10 @@ gdk_window_set_bg_pattern (GdkWindow      *window,
 
   if (private->bg_pixmap == GDK_PARENT_RELATIVE_BG && private->parent)
     {
+      x_offset += private->x;
+      y_offset += private->y;
       gdk_window_set_bg_pattern (GDK_WINDOW (private->parent), cr,
-                                private->x, private->y);
+                                x_offset, y_offset);
     }
   else if (private->bg_pixmap && 
            private->bg_pixmap != GDK_PARENT_RELATIVE_BG && 
@@ -1746,12 +1748,11 @@ gdk_window_set_bg_pattern (GdkWindow      *window,
       cairo_pattern_t *pattern = cairo_pattern_create_for_surface (surface);
       cairo_surface_destroy (surface);
 
-      if (x_offset != 0 || y_offset)
+      if (x_offset != 0 || y_offset != 0)
        {
-         cairo_matrix_t *matrix = cairo_matrix_create ();
-         cairo_matrix_translate (matrix, x_offset, y_offset);
-         cairo_pattern_set_matrix (pattern, matrix);
-         cairo_matrix_destroy (matrix);
+         cairo_matrix_t matrix;
+         cairo_matrix_init_translate (&matrix, x_offset, y_offset);
+         cairo_pattern_set_matrix (pattern, &matrix);
        }
 
       cairo_pattern_set_extend (pattern, CAIRO_EXTEND_REPEAT);
@@ -1764,23 +1765,6 @@ gdk_window_set_bg_pattern (GdkWindow      *window,
     }
 }
 
-static void
-region_path (cairo_t   *cr,
-            GdkRegion *region)
-{
-  GdkRectangle *rectangles;
-  int n_rectangles, i;
-  
-  gdk_region_get_rectangles (region, &rectangles, &n_rectangles);
-  for (i = 0; i < n_rectangles; i++)
-    {
-      cairo_rectangle (cr,
-                      rectangles[i].x, rectangles[i].y,
-                      rectangles[i].width, rectangles[i].height);
-    }
-  g_free (rectangles);
-}
-
 static void
 gdk_window_clear_backing_rect (GdkWindow *window,
                               gint       x,
@@ -1795,15 +1779,14 @@ gdk_window_clear_backing_rect (GdkWindow *window,
   if (GDK_WINDOW_DESTROYED (window))
     return;
 
-  cr = cairo_create ();
-  cairo_set_target_surface (cr, paint->surface);
+  cr = cairo_create (paint->surface);
 
   gdk_window_set_bg_pattern (window, cr, 0, 0);
 
   cairo_rectangle (cr, x, y, width, height);
   cairo_clip (cr);
 
-  region_path (cr, paint->region);
+  gdk_cairo_region (cr, paint->region);
   cairo_fill (cr);
 
   cairo_destroy (cr);