diff options
author | xclaesse <xclaesse@4ee84921-47dd-4033-b63a-18d7a039a3e4> | 2008-11-11 23:25:40 +0800 |
---|---|---|
committer | xclaesse <xclaesse@4ee84921-47dd-4033-b63a-18d7a039a3e4> | 2008-11-11 23:25:40 +0800 |
commit | 1c8c6bfd32d81f1c8b7237cf316d7eb4537f3304 (patch) | |
tree | 3c3d15738ca14d1158cb030c89e2954288555996 /libempathy-gtk/empathy-ui-utils.c | |
parent | a53ed4613b639562ae57a9962f0c8cc183adaa0a (diff) | |
download | gsoc2013-empathy-1c8c6bfd32d81f1c8b7237cf316d7eb4537f3304.tar gsoc2013-empathy-1c8c6bfd32d81f1c8b7237cf316d7eb4537f3304.tar.gz gsoc2013-empathy-1c8c6bfd32d81f1c8b7237cf316d7eb4537f3304.tar.bz2 gsoc2013-empathy-1c8c6bfd32d81f1c8b7237cf316d7eb4537f3304.tar.lz gsoc2013-empathy-1c8c6bfd32d81f1c8b7237cf316d7eb4537f3304.tar.xz gsoc2013-empathy-1c8c6bfd32d81f1c8b7237cf316d7eb4537f3304.tar.zst gsoc2013-empathy-1c8c6bfd32d81f1c8b7237cf316d7eb4537f3304.zip |
Don't automatically resize and png-ify avatars.
git-svn-id: svn+ssh://svn.gnome.org/svn/empathy/trunk@1669 4ee84921-47dd-4033-b63a-18d7a039a3e4
Diffstat (limited to 'libempathy-gtk/empathy-ui-utils.c')
-rw-r--r-- | libempathy-gtk/empathy-ui-utils.c | 30 |
1 files changed, 22 insertions, 8 deletions
diff --git a/libempathy-gtk/empathy-ui-utils.c b/libempathy-gtk/empathy-ui-utils.c index ae3675145..bf391ccc2 100644 --- a/libempathy-gtk/empathy-ui-utils.c +++ b/libempathy-gtk/empathy-ui-utils.c @@ -245,11 +245,14 @@ empathy_icon_name_for_contact (EmpathyContact *contact) } GdkPixbuf * -empathy_pixbuf_from_data (gchar *data, - gsize data_size) +empathy_pixbuf_from_data (gchar *data, + gsize data_size, + gchar **mime_type) { GdkPixbufLoader *loader; + GdkPixbufFormat *format; GdkPixbuf *pixbuf = NULL; + gchar **mime_types; GError *error = NULL; if (!data) { @@ -260,23 +263,34 @@ empathy_pixbuf_from_data (gchar *data, if (!gdk_pixbuf_loader_write (loader, data, data_size, &error)) { DEBUG ("Failed to write to pixbuf loader: %s", error ? error->message : "No error given"); - g_clear_error (&error); - g_object_unref (loader); - return NULL; + goto out; } if (!gdk_pixbuf_loader_close (loader, &error)) { DEBUG ("Failed to close pixbuf loader: %s", error ? error->message : "No error given"); - g_clear_error (&error); - g_object_unref (loader); - return NULL; + goto out; } pixbuf = gdk_pixbuf_loader_get_pixbuf (loader); if (pixbuf) { g_object_ref (pixbuf); + + if (mime_type != NULL) { + format = gdk_pixbuf_loader_get_format (loader); + mime_types = gdk_pixbuf_format_get_mime_types (format); + + *mime_type = g_strdup (*mime_types); + if (*(mime_types + 1) != NULL) { + DEBUG ("Loader supports more than one mime " + "type! Picking the first one, %s", + *mime_type); + } + g_strfreev (mime_types); + } } +out: + g_clear_error (&error); g_object_unref (loader); return pixbuf; |