Mercurial > pidgin.yaz
comparison pidgin/gtkimhtml.c @ 32156:1693114a2655
applied changes from 6cf1aee8ac5e3c836af832eaf26ccedd611dc70b
through e802003adbf0be4496de3de8ac03b47c1e471d00
Original commit message:
Start looking at the GError parameter every time we call these functions:
- gdk_pixbuf_loader_write
- gdk_pixbuf_loader_close
- gdk_pixbuf_new_from_file
- gdk_pixbuf_new_from_file_at_size
- gdk_pixbuf_new_from_file_at_scale
There are times when gdkpixbuf returns a semi-invalid GdkPixbuf object and
also sets the GError. If this happens we want to discard and ignore the
GdkPixbuf object because it can cause problems. For example, calling
gdk_pixbuf_scale_simple() causes gdkpixbuf to rapidly consume memory in
an infinite loop. And that's bad.
This commit adds some helper functions to gtkutils.[c|h] that make it a
little easier to check the GError value. We should use them everywhere
we call any of the above functions.
author | Mark Doliner <mark@kingant.net> |
---|---|
date | Wed, 22 Jun 2011 07:09:42 +0000 |
parents | ac2cf73dbab8 |
children | accce7b79737 a8f62638417e |
comparison
equal
deleted
inserted
replaced
32155:5ffd5582f5fe | 32156:1693114a2655 |
---|---|
5055 gpointer data; | 5055 gpointer data; |
5056 size_t len; | 5056 size_t len; |
5057 | 5057 |
5058 data = imhtml->funcs->image_get_data(image); | 5058 data = imhtml->funcs->image_get_data(image); |
5059 len = imhtml->funcs->image_get_size(image); | 5059 len = imhtml->funcs->image_get_size(image); |
5060 | 5060 if (data && len) |
5061 if (data && len) { | 5061 anim = pidgin_pixbuf_anim_from_data(data, len); |
5062 GdkPixbufLoader *loader = gdk_pixbuf_loader_new(); | |
5063 gdk_pixbuf_loader_write(loader, data, len, NULL); | |
5064 gdk_pixbuf_loader_close(loader, NULL); | |
5065 anim = gdk_pixbuf_loader_get_animation(loader); | |
5066 if (anim) | |
5067 g_object_ref(G_OBJECT(anim)); | |
5068 g_object_unref(G_OBJECT(loader)); | |
5069 } | |
5070 | 5062 |
5071 } | 5063 } |
5072 | 5064 |
5073 if (anim) { | 5065 if (anim) { |
5074 struct im_image_data *t = g_new(struct im_image_data, 1); | 5066 struct im_image_data *t = g_new(struct im_image_data, 1); |