summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEthan Blanton <elb@pidgin.im>2009-04-29 00:39:13 +0000
committerEthan Blanton <elb@pidgin.im>2009-04-29 00:39:13 +0000
commit4e009a68e20caec1494a4319326296c9a30e1b68 (patch)
tree7a2dce5387c8ddc015cba68dfe368d0253ecaed7
parent3326e665c31b0913923c2defffda8befe5722b70 (diff)
downloadpidgin-4e009a68e20caec1494a4319326296c9a30e1b68.tar.gz
disapproval of revision 'dbac7417ffd5d23bca3c6ca96d9d3c9b3be0cd2a'
-rw-r--r--ChangeLog3
-rw-r--r--libpurple/core.c26
-rw-r--r--libpurple/plugin.c15
-rw-r--r--libpurple/plugin.h5
4 files changed, 11 insertions, 38 deletions
diff --git a/ChangeLog b/ChangeLog
index 3e5746e36d..52829b126c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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);