and shut down modules in 2 runs. 1. disable and save, then actually free.

SVN revision: 33917
This commit is contained in:
Carsten Haitzler 2008-03-04 11:48:39 +00:00
parent be433bba00
commit d2efd2f4c1
1 changed files with 17 additions and 1 deletions

View File

@ -43,7 +43,20 @@ e_module_shutdown(void)
*/
VALGRIND_DO_LEAK_CHECK
#endif
for (l = _e_modules; l; l = l->next)
{
E_Module *m;
m = l->data;
if ((m->enabled) && (!m->error))
{
printf("MOD: OFF SHUT %s\n", m->name);
m->func.save(m);
m->func.shutdown(m);
m->enabled = 0;
}
}
l = _e_modules;
_e_modules = NULL;
while (l)
@ -246,6 +259,7 @@ e_module_enable(E_Module *m)
E_OBJECT_CHECK_RETURN(m, 0);
E_OBJECT_TYPE_CHECK_RETURN(m, E_MODULE_TYPE, 0);
if ((m->enabled) || (m->error)) return 0;
printf("MOD: ON %s\n", m->name);
m->data = m->func.init(m);
if (m->data)
{
@ -284,6 +298,7 @@ e_module_disable(E_Module *m)
E_OBJECT_CHECK_RETURN(m, 0);
E_OBJECT_TYPE_CHECK_RETURN(m, E_MODULE_TYPE, 0);
if ((!m->enabled) || (m->error)) return 0;
printf("MOD: OFF %s\n", m->name);
ret = m->func.shutdown(m);
m->data = NULL;
m->enabled = 0;
@ -457,6 +472,7 @@ _e_module_free(E_Module *m)
if ((m->enabled) && (!m->error))
{
printf("MOD: OFF FREE %s\n", m->name);
m->func.save(m);
m->func.shutdown(m);
}