summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenjamin Otte <otte@redhat.com>2011-02-03 17:39:03 +0100
committerBenjamin Otte <otte@redhat.com>2011-02-14 19:24:02 +0100
commitad7ab0f781651c1f9d566ad1908df07a2da77aa4 (patch)
treea8b571e498458494903f7666c1c88aec574de401
parentedb1cb5569437e474ef720ed0f693dc38b1a4984 (diff)
downloadgtk+-ad7ab0f781651c1f9d566ad1908df07a2da77aa4.tar.gz
gdk: Make creating a surface from a pixbuf an intenral function
-rw-r--r--gdk/gdkcairo.c13
-rw-r--r--gdk/gdkinternals.h2
2 files changed, 13 insertions, 2 deletions
diff --git a/gdk/gdkcairo.c b/gdk/gdkcairo.c
index 2ae8b09459..c19296d403 100644
--- a/gdk/gdkcairo.c
+++ b/gdk/gdkcairo.c
@@ -195,6 +195,16 @@ gdk_cairo_set_source_pixbuf (cairo_t *cr,
gdouble pixbuf_x,
gdouble pixbuf_y)
{
+ cairo_surface_t *surface;
+
+ surface = _gdk_cairo_create_surface_for_pixbuf (pixbuf);
+ cairo_set_source_surface (cr, surface, pixbuf_x, pixbuf_y);
+ cairo_surface_destroy (surface);
+}
+
+cairo_surface_t *
+_gdk_cairo_create_surface_for_pixbuf (const GdkPixbuf *pixbuf)
+{
gint width = gdk_pixbuf_get_width (pixbuf);
gint height = gdk_pixbuf_get_height (pixbuf);
guchar *gdk_pixels = gdk_pixbuf_get_pixels (pixbuf);
@@ -277,8 +287,7 @@ gdk_cairo_set_source_pixbuf (cairo_t *cr,
cairo_pixels += cairo_stride;
}
- cairo_set_source_surface (cr, surface, pixbuf_x, pixbuf_y);
- cairo_surface_destroy (surface);
+ return surface;
}
/**
diff --git a/gdk/gdkinternals.h b/gdk/gdkinternals.h
index bb33e090f7..938c020f9b 100644
--- a/gdk/gdkinternals.h
+++ b/gdk/gdkinternals.h
@@ -285,6 +285,8 @@ void gdk_synthesize_window_state (GdkWindow *window,
gboolean _gdk_cairo_surface_extents (cairo_surface_t *surface,
GdkRectangle *extents);
+cairo_surface_t *_gdk_cairo_create_surface_for_pixbuf (const GdkPixbuf *pixbuf);
+
/*************************************
* Interfaces used by windowing code *
*************************************/