# HG changeset patch # User Richard Laager # Date 1177893901 0 # Node ID 4a020cf5942de763dd96cdecf3ecba702de7fc41 # Parent 34618fedf5b94e344c8c3641c3cbb0a54f64f55c# Parent 7fad94837f9eac38301fab7cd976531f96751bdb merge of '45bdc7f0cf3d3c9229f3fcd9de71b882131c05c0' and '8ce6e4b908249fabc820ae1eb512cc4ee075282a' diff -r 34618fedf5b9 -r 4a020cf5942d doc/Makefile.am --- a/doc/Makefile.am Wed Apr 25 02:25:53 2007 +0000 +++ b/doc/Makefile.am Mon Apr 30 00:45:01 2007 +0000 @@ -21,6 +21,7 @@ gtklog-signals.dox \ gtkimhtml-signals.dox \ gtkrc-2.0 \ + imgstore-signals.dox \ log-signals.dox \ notify-signals.dox \ pidgin.1.in \ diff -r 34618fedf5b9 -r 4a020cf5942d doc/imgstore-signals.dox --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/doc/imgstore-signals.dox Mon Apr 30 00:45:01 2007 +0000 @@ -0,0 +1,24 @@ +/** @page imgstore-signals Image Store Signals + + @signals + @signal image-deleting + @endsignals + +
+ + @signaldef image-deleting + @signalproto +char *(*image_deleting)(const PurpleStoredImage *img); + @endsignalproto + @signaldesc + Emitted when a PurpleStoredImage is about to be destroyed. This allows + for what amounts to weak references. Code can hold onto a pointer to + the PurpleStoredImage without actually "holding" a reference. They can + then use a signal handler to let them know when their img is about to + be destroyed. + @param img The image about to be destroyed. + @note It's not possible to purple_imgstore_ref() img to save it. + @endsignaldef + +*/ +// vim: syntax=c tw=75 et diff -r 34618fedf5b9 -r 4a020cf5942d libpurple/buddyicon.c --- a/libpurple/buddyicon.c Wed Apr 25 02:25:53 2007 +0000 +++ b/libpurple/buddyicon.c Mon Apr 30 00:45:01 2007 +0000 @@ -208,7 +208,7 @@ } static void -image_deleting_cb(PurpleStoredImage *img, gpointer data) +image_deleting_cb(const PurpleStoredImage *img, gpointer data) { const char *filename = purple_imgstore_get_filename(img); diff -r 34618fedf5b9 -r 4a020cf5942d pidgin/gtkstatusbox.c --- a/pidgin/gtkstatusbox.c Wed Apr 25 02:25:53 2007 +0000 +++ b/pidgin/gtkstatusbox.c Mon Apr 30 00:45:01 2007 +0000 @@ -1449,9 +1449,18 @@ data = pidgin_convert_buddy_icon(plug, filename, &len); img = purple_buddy_icons_set_account_icon(account, data, len); purple_account_set_buddy_icon_path(account, filename); + } + } + } - purple_account_set_bool(account, "use-global-buddyicon", (filename != NULL)); - } + /* Even if no accounts were processed, load the icon that was set. */ + if (filename != NULL) + { + gchar *contents; + gsize size; + if (g_file_get_contents(filename, &contents, &size, NULL)) + { + img = purple_imgstore_add(contents, size, filename); } } }