From 775cbbeb76e91d04682236e03563e7243bf5fc42 Mon Sep 17 00:00:00 2001 From: HanzZ Date: Wed, 20 Jul 2011 22:34:07 +0200 Subject: [PATCH] Destroy old accounts in libpurple backend --- backends/libpurple/main.cpp | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/backends/libpurple/main.cpp b/backends/libpurple/main.cpp index 5ee59372..a0b7c8f0 100644 --- a/backends/libpurple/main.cpp +++ b/backends/libpurple/main.cpp @@ -229,6 +229,34 @@ class SpectrumNetworkPlugin : public NetworkPlugin { g_free(account->ui_data); account->ui_data = NULL; m_accounts.erase(account); + + purple_notify_close_with_handle(account); + purple_request_close_with_handle(account); + + purple_accounts_remove(account); + + GSList *buddies = purple_find_buddies(account, NULL); + while(buddies) { + PurpleBuddy *b = (PurpleBuddy *) buddies->data; + purple_blist_remove_buddy(b); + buddies = g_slist_delete_link(buddies, buddies); + } + + /* Remove any open conversation for this account */ + for (GList *it = purple_get_conversations(); it; ) { + PurpleConversation *conv = (PurpleConversation *) it->data; + it = it->next; + if (purple_conversation_get_account(conv) == account) + purple_conversation_destroy(conv); + } + + /* Remove this account's pounces */ + // purple_pounce_destroy_all_by_account(account); + + /* This will cause the deletion of an old buddy icon. */ + purple_buddy_icons_set_account_icon(account, NULL, 0); + + purple_account_destroy(account); } }