diff src/conversation.c @ 6846:8ab95f4c9800

[gaim-migrate @ 7391] Added new buddy icon caching code. Each GaimBuddy has its own icon, and the complete list of all icons is now stored in a set of hashtables for quick retrieval. Buddy icons now live much happier in the core, with the magma and tooth fairies (that's where they really live). committer: Tailor Script <tailor@pidgin.im>
author Christian Hammond <chipx86@chipx86.com>
date Mon, 15 Sep 2003 07:35:49 +0000
parents f098765ac919
children 083d1e4a9c78
line wrap: on
line diff
--- a/src/conversation.c	Mon Sep 15 02:23:58 2003 +0000
+++ b/src/conversation.c	Mon Sep 15 07:35:49 2003 +0000
@@ -980,7 +980,7 @@
 	gc   = gaim_conversation_get_gc(conv);
 	name = gaim_conversation_get_name(conv);
 
-	if (gc) {
+	if (gc != NULL) {
 		/* Still connected */
 		prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl);
 
@@ -1052,6 +1052,9 @@
 
 		g_slist_free(conv->u.im->images);
 
+		if (conv->u.im->icon != NULL)
+			gaim_buddy_icon_unref(conv->u.im->icon);
+
 		g_free(conv->u.im);
 
 		ims = g_list_remove(ims, conv);
@@ -1573,6 +1576,31 @@
 }
 
 void
+gaim_im_set_icon(GaimIm *im, GaimBuddyIcon *icon)
+{
+	g_return_if_fail(im != NULL);
+
+	if (im->icon == icon)
+		return;
+
+	if (im->icon != NULL)
+		gaim_buddy_icon_unref(im->icon);
+
+	im->icon = (icon == NULL ? NULL : gaim_buddy_icon_ref(icon));
+
+	gaim_conversation_update(gaim_im_get_conversation(im),
+							 GAIM_CONV_UPDATE_ICON);
+}
+
+GaimBuddyIcon *
+gaim_im_get_icon(const GaimIm *im)
+{
+	g_return_val_if_fail(im != NULL, NULL);
+
+	return im->icon;
+}
+
+void
 gaim_im_set_typing_state(GaimIm *im, int state)
 {
 	g_return_if_fail(im != NULL);
@@ -2587,7 +2615,9 @@
 {
 	void *handle = gaim_conversations_get_handle();
 
-	/* Register preferences */
+	/**********************************************************************
+	 * Register preferences
+	 **********************************************************************/
 
 	/* Conversations */
 	gaim_prefs_add_none("/core/conversations");
@@ -2617,7 +2647,9 @@
 			update_titles_pref_cb, NULL);
 
 
-	/* Register signals */
+	/**********************************************************************
+	 * Register signals
+	 **********************************************************************/
 	gaim_signal_register(handle, "displaying-im-msg",
 						 gaim_marshal_BOOLEAN__POINTER_POINTER_POINTER,
 						 gaim_value_new(GAIM_TYPE_BOOLEAN), 3,