Mercurial > pidgin.yaz
diff pidgin/gtkblist.c @ 30511:9623db527d1e
merged from im.pidgin.pidgin
author | Yoshiki Yazawa <yaz@honeyplanet.jp> |
---|---|
date | Tue, 25 May 2010 22:21:47 +0900 |
parents | 2a19f7385ba5 8e060965d69f |
children | 9c24dd1f1c1a |
line wrap: on
line diff
--- a/pidgin/gtkblist.c Tue May 18 02:29:24 2010 +0900 +++ b/pidgin/gtkblist.c Tue May 25 22:21:47 2010 +0900 @@ -3492,29 +3492,31 @@ for (; accounts ; accounts = g_list_delete_link(accounts, accounts)) { PurpleAccount *account = (PurpleAccount *) accounts->data; - PurpleConnection *gc = purple_account_get_connection(account); - - if (gc->flags & PURPLE_CONNECTION_SUPPORT_MOODS) { - PurplePluginProtocolInfo *prpl_info = - PURPLE_PLUGIN_PROTOCOL_INFO(gc->prpl); - PurpleMood *mood = NULL; - - /* PURPLE_CONNECTION_SUPPORT_MOODS would not be set if the prpl doesn't - * have get_moods, so using PURPLE_PROTOCOL_PLUGIN_HAS_FUNC isn't necessary - * here */ - for (mood = prpl_info->get_moods(account) ; - mood->mood != NULL ; mood++) { - int mood_count = - GPOINTER_TO_INT(g_hash_table_lookup(mood_counts, mood->mood)); - - if (!g_hash_table_lookup(global_moods, mood->mood)) { - g_hash_table_insert(global_moods, (gpointer)mood->mood, mood); + if (purple_account_is_connected(account)) { + PurpleConnection *gc = purple_account_get_connection(account); + + if (gc->flags & PURPLE_CONNECTION_SUPPORT_MOODS) { + PurplePluginProtocolInfo *prpl_info = + PURPLE_PLUGIN_PROTOCOL_INFO(gc->prpl); + PurpleMood *mood = NULL; + + /* PURPLE_CONNECTION_SUPPORT_MOODS would not be set if the prpl doesn't + * have get_moods, so using PURPLE_PROTOCOL_PLUGIN_HAS_FUNC isn't necessary + * here */ + for (mood = prpl_info->get_moods(account) ; + mood->mood != NULL ; mood++) { + int mood_count = + GPOINTER_TO_INT(g_hash_table_lookup(mood_counts, mood->mood)); + + if (!g_hash_table_lookup(global_moods, mood->mood)) { + g_hash_table_insert(global_moods, (gpointer)mood->mood, mood); + } + g_hash_table_insert(mood_counts, (gpointer)mood->mood, + GINT_TO_POINTER(mood_count + 1)); } - g_hash_table_insert(mood_counts, (gpointer)mood->mood, - GINT_TO_POINTER(mood_count + 1)); + + num_accounts++; } - - num_accounts++; } } @@ -3552,8 +3554,9 @@ for (; accounts ; accounts = g_list_delete_link(accounts, accounts)) { PurpleAccount *account = (PurpleAccount *) accounts->data; - if (purple_account_get_connection(account)->flags & - PURPLE_CONNECTION_SUPPORT_MOODS) { + if (purple_account_is_connected(account) && + (purple_account_get_connection(account)->flags & + PURPLE_CONNECTION_SUPPORT_MOODS)) { PurplePresence *presence = purple_account_get_presence(account); PurpleStatus *status = purple_presence_get_status(presence, "mood"); const gchar *curr_mood = purple_status_get_attr_string(status, PURPLE_MOOD_NAME);