Tue, 18 Mar 2014 13:11:04 +0100
Implement purple_chat_conversation_get_users_count and use it instead of counting the list
--- 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));