diff options
author | Carsten Haitzler <raster@rasterman.com> | 2011-02-16 05:20:13 +0000 |
---|---|---|
committer | Carsten Haitzler <raster@rasterman.com> | 2011-02-16 05:20:13 +0000 |
commit | f09e917e1856d0775bc5df1a69cce16b477decbd (patch) | |
tree | bbf3d8901def8612d575484cb966bfdc0dca3e49 /src/bin/e_module.c | |
parent | 6739ee97477420776bd61d4fc301d8a276bef1dc (diff) | |
download | enlightenment-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.c | 25 |
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; |