File librsvg-2.32.0-gtk3.patch of Package mingw64-librsvg

--- librsvg-2.32.0/gtk-engine/svg-render.c	2010-07-02 15:10:58.000000000 +0200
+++ librsvg-2.32.0/gtk-engine/svg-render.c	2010-09-11 04:42:37.000000000 +0200
@@ -418,21 +418,30 @@
       y_offset = 0;
     }
 
+  cairo_t *cr;
+
   if (mask)
     {
-      gdk_pixbuf_render_threshold_alpha (tmp_pixbuf, mask,
-					 x_offset, y_offset,
-					 rect.x, rect.y,
-					 rect.width, rect.height,
-					 128);
-    }
+      cr = gdk_cairo_create (mask);
+
+      gdk_cairo_set_source_pixbuf (cr, tmp_pixbuf,
+                                   -x_offset + rect.x, 
+                                   -y_offset + rect.y);
+      gdk_cairo_rectangle (cr, &rect);
+      cairo_fill (cr);
+
+      cairo_destroy (cr);
+    }
+
+  cr = gdk_cairo_create (window);
+  gdk_cairo_set_source_pixbuf (cr, 
+                               tmp_pixbuf,
+                               -x_offset + rect.x, 
+                               -y_offset + rect.y);
+  gdk_cairo_rectangle (cr, &rect);
+  cairo_fill (cr);
 
-  gdk_draw_pixbuf (window, NULL, tmp_pixbuf, 
-		   x_offset, y_offset,
-		   rect.x, rect.y,
-		   rect.width, rect.height,
-		   GDK_RGB_DITHER_NORMAL,
-		   0, 0);
+  cairo_destroy (cr);
   g_object_unref (tmp_pixbuf);
 }
 
@@ -827,37 +836,20 @@
 	}
       else
 	{
-	  GdkPixmap *tmp_pixmap;
-	  GdkGC *tmp_gc;
-	  GdkGCValues gc_values;
-
-	  tmp_pixmap = gdk_pixmap_new (window,
-				       pixbuf_width,
-				       pixbuf_height,
-				       -1);
-	  tmp_gc = gdk_gc_new (tmp_pixmap);
-	  gdk_draw_pixbuf (tmp_pixmap, tmp_gc, pixbuf, 
-			   0, 0, 
-			   0, 0,
-			   pixbuf_width, pixbuf_height,
-			   GDK_RGB_DITHER_NORMAL,
-			   0, 0);
-	  g_object_unref (tmp_gc);
-
-	  gc_values.fill = GDK_TILED;
-	  gc_values.tile = tmp_pixmap;
-	  tmp_gc = gdk_gc_new_with_values (window,
-					   &gc_values, GDK_GC_FILL | GDK_GC_TILE);
+          cairo_t *cr = gdk_cairo_create (window);
+
+          gdk_cairo_set_source_pixbuf (cr, pixbuf, 0, 0);
+          cairo_pattern_set_extend (cairo_get_source (cr), CAIRO_EXTEND_REPEAT);
+
 	  if (clip_rect)
-	    gdk_draw_rectangle (window, tmp_gc, TRUE,
-				clip_rect->x, clip_rect->y, clip_rect->width, clip_rect->height);
+	    gdk_cairo_rectangle (cr, clip_rect);
 	  else
-	    gdk_draw_rectangle (window, tmp_gc, TRUE, x, y, width, height);
+	    cairo_rectangle (cr, x, y, width, height);
 	  
-	  g_object_unref (tmp_gc);
-	  g_object_unref (tmp_pixmap);
+          cairo_fill (cr);
+
+          cairo_destroy (cr);
 	}
     }
-
   g_object_unref(pixbuf);
 }
openSUSE Build Service is sponsored by