comparison libpurple/core.c @ 26529:8a0797f40695

Apply patch from darkrain42 to fix the crash-on-exit. Hopefully, the order of shutdown is no longer broken now. Fixes #8774.
author Elliott Sales de Andrade <qulogic@pidgin.im>
date Fri, 10 Apr 2009 05:57:23 +0000
parents 6b0c6a370cda
children e07c066b3172
comparison
equal deleted inserted replaced
26528:bd61f91e669a 26529:8a0797f40695
214 purple_certificate_uninit(); 214 purple_certificate_uninit();
215 215
216 /* The SSL plugins must be uninit before they're unloaded */ 216 /* The SSL plugins must be uninit before they're unloaded */
217 purple_ssl_uninit(); 217 purple_ssl_uninit();
218 218
219 /* Unload all plugins before the UI because UI plugins might call 219 /* Unload all non-loader, non-prpl plugins before shutting down
220 * UI-specific functions */ 220 * subsystems. */
221 purple_debug_info("main", "Unloading all plugins\n"); 221 purple_debug_info("main", "Unloading normal plugins\n");
222 purple_plugins_destroy_all(); 222 purple_plugins_unload(PURPLE_PLUGIN_STANDARD);
223
224 /* Shut down the UI before all the subsystems */
225 ops = purple_core_get_ui_ops();
226 if (ops != NULL && ops->quit != NULL)
227 ops->quit();
228 223
229 /* Save .xml files, remove signals, etc. */ 224 /* Save .xml files, remove signals, etc. */
230 purple_smileys_uninit(); 225 purple_smileys_uninit();
231 purple_idle_uninit(); 226 purple_idle_uninit();
232 purple_pounces_uninit(); 227 purple_pounces_uninit();
245 purple_proxy_uninit(); 240 purple_proxy_uninit();
246 purple_dnsquery_uninit(); 241 purple_dnsquery_uninit();
247 purple_imgstore_uninit(); 242 purple_imgstore_uninit();
248 purple_network_uninit(); 243 purple_network_uninit();
249 244
250 /* Everything after this must not try to read any prefs */ 245 /* Everything after unloading all plugins must not fail if prpls aren't
246 * around */
247 purple_debug_info("main", "Unloading all plugins\n");
248 purple_plugins_destroy_all();
249
250 ops = purple_core_get_ui_ops();
251 if (ops != NULL && ops->quit != NULL)
252 ops->quit();
253
254 /* Everything after prefs_uninit must not try to read any prefs */
251 purple_prefs_uninit(); 255 purple_prefs_uninit();
252 purple_plugins_uninit(); 256 purple_plugins_uninit();
253 #ifdef HAVE_DBUS 257 #ifdef HAVE_DBUS
254 purple_dbus_uninit(); 258 purple_dbus_uninit();
255 #endif 259 #endif
256 260
257 purple_cmds_uninit(); 261 purple_cmds_uninit();
258 /* Everything after this cannot try to write things to the confdir */ 262 /* Everything after util_uninit cannot try to write things to the confdir */
259 purple_util_uninit(); 263 purple_util_uninit();
260 purple_log_uninit(); 264 purple_log_uninit();
261 265
262 purple_signals_uninit(); 266 purple_signals_uninit();
263 267