Implement purple_chat_conversation_get_users_count and use it instead of counting the list

Tue, 18 Mar 2014 13:11:04 +0100

author
Tomasz Wasilczyk <twasilczyk@pidgin.im>
date
Tue, 18 Mar 2014 13:11:04 +0100
changeset 35638
1ae6f7c41db3
parent 35637
965caf7eb32e
child 35639
7391a9c98a1d

Implement purple_chat_conversation_get_users_count and use it instead of counting the list

libpurple/conversationtypes.c file | annotate | diff | comparison | revisions
libpurple/conversationtypes.h file | annotate | diff | comparison | revisions
libpurple/plugins/joinpart.c file | annotate | diff | comparison | revisions
pidgin/gtkblist.c file | annotate | diff | comparison | revisions
pidgin/gtkconv.c file | annotate | diff | comparison | revisions
--- a/libpurple/conversationtypes.c	Tue Mar 18 12:20:55 2014 +0100
+++ b/libpurple/conversationtypes.c	Tue Mar 18 13:11:04 2014 +0100
@@ -620,6 +620,16 @@
 	return priv->in_room;
 }
 
+guint
+purple_chat_conversation_get_users_count(const PurpleChatConversation *chat)
+{
+	PurpleChatConversationPrivate *priv = PURPLE_CHAT_CONVERSATION_GET_PRIVATE(chat);
+
+	g_return_val_if_fail(priv != NULL, 0);
+
+	return g_hash_table_size(priv->users);
+}
+
 void
 purple_chat_conversation_ignore(PurpleChatConversation *chat, const char *name)
 {
--- a/libpurple/conversationtypes.h	Tue Mar 18 12:20:55 2014 +0100
+++ b/libpurple/conversationtypes.h	Tue Mar 18 13:11:04 2014 +0100
@@ -385,6 +385,17 @@
 GList *purple_chat_conversation_get_users(const PurpleChatConversation *chat);
 
 /**
+ * purple_chat_conversation_get_users_count:
+ * @chat: The chat.
+ *
+ * Returns count of users in the chat room.
+ *
+ * Returns: The count of users in the chat room.
+ */
+guint
+purple_chat_conversation_get_users_count(const PurpleChatConversation *chat);
+
+/**
  * purple_chat_conversation_ignore:
  * @chat: The chat.
  * @name: The name of the user.
--- a/libpurple/plugins/joinpart.c	Tue Mar 18 12:20:55 2014 +0100
+++ b/libpurple/plugins/joinpart.c	Tue Mar 18 13:11:04 2014 +0100
@@ -90,7 +90,7 @@
 	/* If the room is small, don't bother. */
 	chat = PURPLE_CHAT_CONVERSATION(conv);
 	threshold = purple_prefs_get_int(THRESHOLD_PREF);
-	if (g_list_length(purple_chat_conversation_get_users(chat)) < threshold)
+	if (purple_chat_conversation_get_users_count(chat) < threshold)
 		return FALSE;
 
 	if (!purple_prefs_get_bool(HIDE_BUDDIES_PREF) &&
--- a/pidgin/gtkblist.c	Tue Mar 18 12:20:55 2014 +0100
+++ b/pidgin/gtkblist.c	Tue Mar 18 13:11:04 2014 +0100
@@ -3841,7 +3841,7 @@
 
 		if (conv && !purple_chat_conversation_has_left(conv)) {
 			g_string_append_printf(str, _("\n<b>Occupants:</b> %d"),
-					g_list_length(purple_chat_conversation_get_users(conv)));
+				purple_chat_conversation_get_users_count(conv));
 
 			if (prpl_info && (prpl_info->options & OPT_PROTO_CHAT_TOPIC)) {
 				const char *chattopic = purple_chat_conversation_get_topic(conv);
--- a/pidgin/gtkconv.c	Tue Mar 18 12:20:55 2014 +0100
+++ b/pidgin/gtkconv.c	Tue Mar 18 13:11:04 2014 +0100
@@ -7028,7 +7028,7 @@
 	gtkconv = PIDGIN_CONVERSATION(PURPLE_CONVERSATION(chat));
 	gtkchat = gtkconv->u.chat;
 
-	num_users = g_list_length(purple_chat_conversation_get_users(chat));
+	num_users = purple_chat_conversation_get_users_count(chat);
 
 	g_snprintf(tmp, sizeof(tmp),
 			   ngettext("%d person in room", "%d people in room",
@@ -7114,7 +7114,7 @@
 	gtkconv = PIDGIN_CONVERSATION(PURPLE_CONVERSATION(chat));
 	gtkchat = gtkconv->u.chat;
 
-	num_users = g_list_length(purple_chat_conversation_get_users(chat));
+	num_users = purple_chat_conversation_get_users_count(chat);
 
 	for (l = users; l != NULL; l = l->next) {
 		model = gtk_tree_view_get_model(GTK_TREE_VIEW(gtkchat->list));

mercurial