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);
}