From: Benjamin Otte Date: Mon, 12 Jul 2010 13:41:27 +0000 (+0200) Subject: pixbuf-engine: Replace gdk_draw_pixbuf() with Cairo equivalent X-Git-Url: http://pileus.org/git/?p=~andy%2Fgtk;a=commitdiff_plain;h=59db821725fcfd64d5e14fe3aa0d735ae9d38651 pixbuf-engine: Replace gdk_draw_pixbuf() with Cairo equivalent This replaces the tiled fill call only. --- diff --git a/modules/engines/pixbuf/pixbuf-render.c b/modules/engines/pixbuf/pixbuf-render.c index d16e10a6c..7b5bb12d2 100644 --- a/modules/engines/pixbuf/pixbuf-render.c +++ b/modules/engines/pixbuf/pixbuf-render.c @@ -844,35 +844,19 @@ theme_pixbuf_render (ThemePixbuf *theme_pb, } 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); } } }