[librsvg] Create type specific gdk-pixbuf loader
- From: Christian Persch <chpe src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [librsvg] Create type specific gdk-pixbuf loader
- Date: Sat, 28 Jan 2012 17:34:41 +0000 (UTC)
commit 4af98a95c59d159bdb551a0cef949e7e7118055f
Author: Christian Persch <chpe gnome org>
Date: Fri Jan 27 22:52:32 2012 +0100
Create type specific gdk-pixbuf loader
When we know the mime type of the content, use
gdk_pixbuf_loader_new_with_mime_type().
rsvg-image.c | 18 ++++++++++++++++--
1 files changed, 16 insertions(+), 2 deletions(-)
---
diff --git a/rsvg-image.c b/rsvg-image.c
index 44a5f97..b655974 100644
--- a/rsvg-image.c
+++ b/rsvg-image.c
@@ -43,16 +43,30 @@ rsvg_cairo_surface_new_from_href (RsvgHandle *handle,
{
guint8 *data;
gsize data_len;
+ char *content_type = NULL, *mime_type;
GdkPixbufLoader *loader;
GdkPixbuf *pixbuf = NULL;
int res;
cairo_surface_t *surface;
- data = _rsvg_handle_acquire_data (handle, href, NULL, &data_len, error);
+ data = _rsvg_handle_acquire_data (handle, href, &content_type, &data_len, error);
if (data == NULL)
return NULL;
- loader = gdk_pixbuf_loader_new ();
+ if (content_type) {
+ mime_type = g_content_type_get_mime_type (content_type);
+ loader = gdk_pixbuf_loader_new_with_mime_type (mime_type, error);
+ g_free (mime_type);
+ g_free (content_type);
+ } else {
+ loader = gdk_pixbuf_loader_new ();
+ }
+
+ if (loader == NULL) {
+ g_free (data);
+ return NULL;
+ }
+
res = gdk_pixbuf_loader_write (loader, data, data_len, error);
g_free (data);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]