summaryrefslogtreecommitdiff
path: root/src/bin/e_module.c
diff options
context:
space:
mode:
authorCarsten Haitzler <raster@rasterman.com>2011-02-16 05:20:13 +0000
committerCarsten Haitzler <raster@rasterman.com>2011-02-16 05:20:13 +0000
commitf09e917e1856d0775bc5df1a69cce16b477decbd (patch)
treebbf3d8901def8612d575484cb966bfdc0dca3e49 /src/bin/e_module.c
parent6739ee97477420776bd61d4fc301d8a276bef1dc (diff)
downloadenlightenment-f09e917e1856d0775bc5df1a69cce16b477decbd.tar.gz
fix case where we could have x fatal stuff happen during shutdown or
we try use x on shutdown when x io fatal conditions have happened. x_fatal flag around for that now too. tested. seems to now be happy and not cause aborts on shutdown when x has gone. SVN revision: 57075
Diffstat (limited to 'src/bin/e_module.c')
-rw-r--r--src/bin/e_module.c25
1 files changed, 16 insertions, 9 deletions
diff --git a/src/bin/e_module.c b/src/bin/e_module.c
index d46153ecb8..6c39f9d8a4 100644
--- a/src/bin/e_module.c
+++ b/src/bin/e_module.c
@@ -45,16 +45,23 @@ e_module_shutdown(void)
#endif
/* do not use EINA_LIST_FREE! e_object_del modifies list */
- while (_e_modules)
+ if (x_fatal)
{
- m = _e_modules->data;
- if ((m) && (m->enabled) && !(m->error))
- {
- m->func.save(m);
- m->func.shutdown(m);
- m->enabled = 0;
- }
- e_object_del(E_OBJECT(m));
+ e_module_save_all();
+ }
+ else
+ {
+ while (_e_modules)
+ {
+ m = _e_modules->data;
+ if ((m) && (m->enabled) && !(m->error))
+ {
+ m->func.save(m);
+ m->func.shutdown(m);
+ m->enabled = 0;
+ }
+ e_object_del(E_OBJECT(m));
+ }
}
return 1;