diff options
author | caro <caro@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33> | 2009-10-08 21:58:32 +0000 |
---|---|---|
committer | caro <caro@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33> | 2009-10-08 21:58:32 +0000 |
commit | 504edb70ab366d2b12dec0268d6095c56cb2c7ff (patch) | |
tree | e4c4d95ed012cb081ba9f6964654b885cff11b2b /src/lib | |
parent | f37c0abc6884cc0eae47560ebf786960cbcf6791 (diff) | |
download | edje-504edb70ab366d2b12dec0268d6095c56cb2c7ff.tar.gz edje-504edb70ab366d2b12dec0268d6095c56cb2c7ff.tar.bz2 edje-504edb70ab366d2b12dec0268d6095c56cb2c7ff.zip |
Check if one of the dependencies fails in edje_init()
git-svn-id: svn+ssh://svn.enlightenment.org/var/svn/e/trunk/edje@42975 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33
Diffstat (limited to 'src/lib')
-rw-r--r-- | src/lib/edje_main.c | 51 |
1 files changed, 35 insertions, 16 deletions
diff --git a/src/lib/edje_main.c b/src/lib/edje_main.c index 91c802e..03d3ebf 100644 --- a/src/lib/edje_main.c +++ b/src/lib/edje_main.c @@ -50,15 +50,22 @@ edje_init(void) if (++_edje_init_count != 1) return _edje_init_count; - eina_init(); - ecore_job_init(); srand(time(NULL)); + + if (!eina_init()) + return --_edje_init_count; + if (!ecore_job_init()) + goto shutdown_eina; + if (!embryo_init()) + goto shutdown_ecore_job; + if (!eet_init()) + goto shutdown_embryo; + _edje_edd_setup(); _edje_text_init(); _edje_box_init(); _edje_lua_init(); - embryo_init(); - eet_init(); + _edje_message_init(); _edje_real_part_mp = eina_mempool_add("chained_mempool", "Edje_Real_Part", NULL, @@ -66,7 +73,7 @@ edje_init(void) if (!_edje_real_part_mp) { EINA_ERROR_PERR("ERROR: Mempool for Edje_Real_Part cannot be allocated.\n"); - goto on_error; + goto shutdown_eet; } _edje_real_part_state_mp = eina_mempool_add("chained_mempool", @@ -75,19 +82,30 @@ edje_init(void) if (!_edje_real_part_state_mp) { EINA_ERROR_PERR("ERROR: Mempool for Edje_Real_Part_State cannot be allocated.\n"); - goto on_error; + goto shutdown_eet; } - _edje_message_init(); - return _edje_init_count; - on_error: + shutdown_eet: eina_mempool_del(_edje_real_part_state_mp); eina_mempool_del(_edje_real_part_mp); _edje_real_part_state_mp = NULL; _edje_real_part_mp = NULL; - return 0; + _edje_message_shutdown(); + _edje_lua_shutdown(); + _edje_box_shutdown(); + _edje_text_class_members_free(); + _edje_text_class_hash_free(); + _edje_edd_free(); + eet_shutdown(); + shutdown_embryo: + embryo_shutdown(); + shutdown_ecore_job: + ecore_job_shutdown(); + shutdown_eina: + eina_shutdown(); + return --_edje_init_count; } /** @@ -120,22 +138,23 @@ edje_shutdown(void) _edje_timer = NULL; _edje_file_cache_shutdown(); - _edje_message_shutdown(); - _edje_edd_free(); _edje_color_class_members_free(); _edje_color_class_hash_free(); - _edje_text_class_members_free(); - _edje_text_class_hash_free(); - _edje_box_shutdown(); eina_mempool_del(_edje_real_part_state_mp); eina_mempool_del(_edje_real_part_mp); _edje_real_part_state_mp = NULL; _edje_real_part_mp = NULL; + _edje_message_shutdown(); + _edje_lua_shutdown(); + _edje_box_shutdown(); + _edje_text_class_members_free(); + _edje_text_class_hash_free(); + _edje_edd_free(); + eet_shutdown(); embryo_shutdown(); - _edje_lua_shutdown(); ecore_job_shutdown(); eina_shutdown(); |