diff options
author | Ethan Blanton <elb@pidgin.im> | 2009-04-29 00:39:13 +0000 |
---|---|---|
committer | Ethan Blanton <elb@pidgin.im> | 2009-04-29 00:39:13 +0000 |
commit | 4e009a68e20caec1494a4319326296c9a30e1b68 (patch) | |
tree | 7a2dce5387c8ddc015cba68dfe368d0253ecaed7 | |
parent | 3326e665c31b0913923c2defffda8befe5722b70 (diff) | |
download | pidgin-4e009a68e20caec1494a4319326296c9a30e1b68.tar.gz |
disapproval of revision 'dbac7417ffd5d23bca3c6ca96d9d3c9b3be0cd2a'
-rw-r--r-- | ChangeLog | 3 | ||||
-rw-r--r-- | libpurple/core.c | 26 | ||||
-rw-r--r-- | libpurple/plugin.c | 15 | ||||
-rw-r--r-- | libpurple/plugin.h | 5 |
4 files changed, 11 insertions, 38 deletions
@@ -1,9 +1,6 @@ Pidgin and Finch: The Pimpin' Penguin IM Clients That're Good for the Soul version 2.5.6 (??/??/2009): - libpurple: - * Fix various crashes on exit. - IRC: * Correctly handle WHOIS for users who are joined to a large number of channels. diff --git a/libpurple/core.c b/libpurple/core.c index 501b90dee7..7e4abd44fb 100644 --- a/libpurple/core.c +++ b/libpurple/core.c @@ -209,10 +209,15 @@ purple_core_quit(void) /* The SSL plugins must be uninit before they're unloaded */ purple_ssl_uninit(); - /* Unload all non-loader, non-prpl plugins before shutting down - * subsystems. */ - purple_debug_info("main", "Unloading normal plugins\n"); - purple_plugins_unload(PURPLE_PLUGIN_STANDARD); + /* Unload all plugins before the UI because UI plugins might call + * UI-specific functions */ + purple_debug_info("main", "Unloading all plugins\n"); + purple_plugins_destroy_all(); + + /* Shut down the UI before all the subsystems */ + ops = purple_core_get_ui_ops(); + if (ops != NULL && ops->quit != NULL) + ops->quit(); /* Save .xml files, remove signals, etc. */ purple_smileys_uninit(); @@ -234,16 +239,7 @@ purple_core_quit(void) purple_imgstore_uninit(); purple_network_uninit(); - /* Everything after unloading all plugins must not fail if prpls aren't - * around */ - purple_debug_info("main", "Unloading all plugins\n"); - purple_plugins_destroy_all(); - - ops = purple_core_get_ui_ops(); - if (ops != NULL && ops->quit != NULL) - ops->quit(); - - /* Everything after prefs_uninit must not try to read any prefs */ + /* Everything after this must not try to read any prefs */ purple_prefs_uninit(); purple_plugins_uninit(); #ifdef HAVE_DBUS @@ -251,7 +247,7 @@ purple_core_quit(void) #endif purple_cmds_uninit(); - /* Everything after util_uninit cannot try to write things to the confdir */ + /* Everything after this cannot try to write things to the confdir */ purple_util_uninit(); purple_signals_uninit(); diff --git a/libpurple/plugin.c b/libpurple/plugin.c index bd79e28f7a..738d42f6bc 100644 --- a/libpurple/plugin.c +++ b/libpurple/plugin.c @@ -1229,21 +1229,6 @@ purple_plugins_unload_all(void) } void -purple_plugins_unload(PurplePluginType type) -{ -#ifdef PURPLE_PLUGINS - GList *l; - - for (l = plugins; l; l = l->next) { - PurplePlugin *plugin = l->data; - if (plugin->info->type == type && purple_plugin_is_loaded(plugin)) - purple_plugin_unload(plugin); - } - -#endif /* PURPLE_PLUGINS */ -} - -void purple_plugins_destroy_all(void) { #ifdef PURPLE_PLUGINS diff --git a/libpurple/plugin.h b/libpurple/plugin.h index 100193b2b7..a731a3ba28 100644 --- a/libpurple/plugin.h +++ b/libpurple/plugin.h @@ -503,11 +503,6 @@ void purple_plugins_add_search_path(const char *path); void purple_plugins_unload_all(void); /** - * Unloads all plugins of a specific type. - */ -void purple_plugins_unload(PurplePluginType type); - -/** * Destroys all registered plugins. */ void purple_plugins_destroy_all(void); |