static void purple_protocol_finalize(GObject *object) { PurpleProtocol *protocol = PURPLE_PROTOCOL(object); GList *accounts, *l; accounts = purple_accounts_get_all_active(); for (l = accounts; l != NULL; l = l->next) { PurpleAccount *account = PURPLE_ACCOUNT(l->data); if (purple_account_is_disconnected(account)) continue; if (purple_strequal(protocol->id, purple_account_get_protocol_id(account))) purple_account_disconnect(account); } g_list_free(accounts); purple_request_close_with_handle(protocol); purple_notify_close_with_handle(protocol); purple_signals_disconnect_by_handle(protocol); purple_signals_unregister_by_instance(protocol); purple_prefs_disconnect_by_handle(protocol); user_splits_free(protocol); account_options_free(protocol); icon_spec_free(protocol); PURPLE_DBUS_UNREGISTER_POINTER(protocol); parent_class->finalize(object); }
void purple_imgstore_uninit() { g_hash_table_destroy(imgstore); purple_signals_unregister_by_instance(purple_imgstore_get_handle()); }
void purple_sound_uninit() { if(sound_ui_ops && sound_ui_ops->uninit) sound_ui_ops->uninit(); purple_signals_unregister_by_instance(purple_sounds_get_handle()); }
void purple_conversations_uninit(void) { while (conversations) g_object_unref(G_OBJECT(conversations->data)); g_hash_table_destroy(conversation_cache); purple_signals_unregister_by_instance(purple_conversations_get_handle()); }
void purple_xfers_uninit(void) { void *handle = purple_xfers_get_handle(); purple_signals_disconnect_by_handle(handle); purple_signals_unregister_by_instance(handle); g_hash_table_destroy(xfers_data); xfers_data = NULL; }
void purple_plugins_uninit(void) { void *handle = purple_plugins_get_handle(); purple_signals_disconnect_by_handle(handle); purple_signals_unregister_by_instance(handle); while (search_paths) { g_free(search_paths->data); search_paths = g_list_delete_link(search_paths, search_paths); } }
void purple_ciphers_uninit() { PurpleCipher *cipher; GList *l, *ll; for(l = ciphers; l; l = ll) { ll = l->next; cipher = PURPLE_CIPHER(l->data); purple_ciphers_unregister_cipher(cipher); } g_list_free(ciphers); purple_signals_unregister_by_instance(purple_ciphers_get_handle()); }
static gboolean unload_plugin(PurplePlugin *plugin) { purple_signals_unregister_by_instance(plugin); /* reverse order of init_plugin */ jabber_bosh_uninit(); jabber_data_uninit(); jabber_si_uninit(); jabber_ibb_uninit(); /* PEP things should be uninit via jabber_pep_uninit, not here */ jabber_pep_uninit(); jabber_caps_uninit(); jabber_iq_uninit(); jabber_unregister_commands(); /* Stay on target...stay on target... Almost there... */ jabber_uninit_plugin(plugin); return TRUE; }
void pidgin_log_uninit(void) { purple_signals_unregister_by_instance(pidgin_log_get_handle()); }
void purple_notify_uninit(void) { purple_signals_unregister_by_instance(purple_notify_get_handle()); }
void purple_connections_uninit(void) { purple_signals_unregister_by_instance(purple_connections_get_handle()); }