libpurple/account.c

changeset 40992
3a973a9c5a64
parent 40863
32c1f097d4e8
child 41137
3c1574216aed
equal deleted inserted replaced
40991:d92defc9ba95 40992:3a973a9c5a64
28 #include "debug.h" 28 #include "debug.h"
29 #include "network.h" 29 #include "network.h"
30 #include "notify.h" 30 #include "notify.h"
31 #include "prefs.h" 31 #include "prefs.h"
32 #include "purpleaccountpresence.h" 32 #include "purpleaccountpresence.h"
33 #include "purpleconversationmanager.h"
33 #include "purplecredentialmanager.h" 34 #include "purplecredentialmanager.h"
34 #include "purpleprivate.h" 35 #include "purpleprivate.h"
35 #include "purpleprotocolclient.h" 36 #include "purpleprotocolclient.h"
36 #include "purpleprotocolmanager.h" 37 #include "purpleprotocolmanager.h"
37 #include "purpleprotocolserver.h" 38 #include "purpleprotocolserver.h"
1049 purple_account_finalize(GObject *object) 1050 purple_account_finalize(GObject *object)
1050 { 1051 {
1051 GList *l; 1052 GList *l;
1052 PurpleAccount *account = PURPLE_ACCOUNT(object); 1053 PurpleAccount *account = PURPLE_ACCOUNT(object);
1053 PurpleAccountPrivate *priv = purple_account_get_instance_private(account); 1054 PurpleAccountPrivate *priv = purple_account_get_instance_private(account);
1055 PurpleConversationManager *manager = NULL;
1054 1056
1055 purple_debug_info("account", "Destroying account %p\n", account); 1057 purple_debug_info("account", "Destroying account %p\n", account);
1056 purple_signal_emit(purple_accounts_get_handle(), "account-destroying", 1058 purple_signal_emit(purple_accounts_get_handle(), "account-destroying",
1057 account); 1059 account);
1058 1060
1059 for (l = purple_conversations_get_all(); l != NULL; l = l->next) 1061 manager = purple_conversation_manager_get_default();
1060 { 1062 l = purple_conversation_manager_get_all(manager);
1061 PurpleConversation *conv = (PurpleConversation *)l->data; 1063 while(l != NULL) {
1062 1064 PurpleConversation *conv = PURPLE_CONVERSATION(l->data);
1063 if (purple_conversation_get_account(conv) == account) 1065
1066 if (purple_conversation_get_account(conv) == account) {
1064 purple_conversation_set_account(conv, NULL); 1067 purple_conversation_set_account(conv, NULL);
1068 }
1069
1070 l = g_list_delete_link(l, l);
1065 } 1071 }
1066 1072
1067 purple_account_set_status_types(account, NULL); 1073 purple_account_set_status_types(account, NULL);
1068 1074
1069 if (priv->proxy_info) 1075 if (priv->proxy_info)

mercurial