From c64b269019b2520be5863c534cb78fa48d0b19b7 Mon Sep 17 00:00:00 2001 From: Alexander Larsson Date: Mon, 24 Jun 2013 12:53:53 +0200 Subject: [PATCH] Use gdk_cairo_pixbuf_to_surface when possible Rather than creating a surface and drawing to it. --- gtk/gtkcssimagesurface.c | 10 +--------- gtk/gtkcssstylefuncs.c | 11 ++--------- gtk/gtknumerableicon.c | 12 +----------- 3 files changed, 4 insertions(+), 29 deletions(-) diff --git a/gtk/gtkcssimagesurface.c b/gtk/gtkcssimagesurface.c index 8f2e612d1e..a2353902d5 100644 --- a/gtk/gtkcssimagesurface.c +++ b/gtk/gtkcssimagesurface.c @@ -142,20 +142,12 @@ _gtk_css_image_surface_new_for_pixbuf (GdkPixbuf *pixbuf) { GtkCssImage *image; cairo_surface_t *surface; - cairo_t *cr; g_return_val_if_fail (GDK_IS_PIXBUF (pixbuf), NULL); - surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, - gdk_pixbuf_get_width (pixbuf), - gdk_pixbuf_get_height (pixbuf)); - cr = cairo_create (surface); - gdk_cairo_set_source_pixbuf (cr, pixbuf, 0, 0); - cairo_paint (cr); - cairo_destroy (cr); + surface = gdk_cairo_pixbuf_to_surface (pixbuf, NULL); image = _gtk_css_image_surface_new (surface); - cairo_surface_destroy (surface); return image; diff --git a/gtk/gtkcssstylefuncs.c b/gtk/gtkcssstylefuncs.c index b6fefcab73..a228ea48d0 100644 --- a/gtk/gtkcssstylefuncs.c +++ b/gtk/gtkcssstylefuncs.c @@ -766,7 +766,6 @@ pattern_value_parse (GtkCssParser *parser, GFile *file; cairo_surface_t *surface; cairo_pattern_t *pattern; - cairo_t *cr; cairo_matrix_t matrix; file = _gtk_css_parser_read_url (parser); @@ -784,21 +783,15 @@ pattern_value_parse (GtkCssParser *parser, return FALSE; } - surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, - gdk_pixbuf_get_width (pixbuf), - gdk_pixbuf_get_height (pixbuf)); - cr = cairo_create (surface); - gdk_cairo_set_source_pixbuf (cr, pixbuf, 0, 0); - cairo_paint (cr); + surface = gdk_cairo_pixbuf_to_surface (pixbuf, NULL); pattern = cairo_pattern_create_for_surface (surface); + cairo_surface_destroy (surface); cairo_matrix_init_scale (&matrix, gdk_pixbuf_get_width (pixbuf), gdk_pixbuf_get_height (pixbuf)); cairo_pattern_set_matrix (pattern, &matrix); - cairo_surface_destroy (surface); - cairo_destroy (cr); g_object_unref (pixbuf); g_value_take_boxed (value, pattern); diff --git a/gtk/gtknumerableicon.c b/gtk/gtknumerableicon.c index f9233a5769..e1811c6865 100644 --- a/gtk/gtknumerableicon.c +++ b/gtk/gtknumerableicon.c @@ -196,7 +196,6 @@ draw_from_gicon (GtkNumerableIcon *self) GtkIconInfo *info; GdkPixbuf *pixbuf; cairo_surface_t *surface; - cairo_t *cr; if (self->priv->style != NULL) { @@ -220,16 +219,7 @@ draw_from_gicon (GtkNumerableIcon *self) if (pixbuf == NULL) return NULL; - surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, - gdk_pixbuf_get_width (pixbuf), - gdk_pixbuf_get_height (pixbuf)); - - cr = cairo_create (surface); - - gdk_cairo_set_source_pixbuf (cr, pixbuf, 0, 0); - cairo_paint (cr); - - cairo_destroy (cr); + surface = gdk_cairo_pixbuf_to_surface (pixbuf, NULL); g_object_unref (pixbuf); return surface;