summaryrefslogtreecommitdiff
path: root/src/lib
diff options
context:
space:
mode:
authorcaro <caro@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>2009-10-08 21:58:32 +0000
committercaro <caro@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>2009-10-08 21:58:32 +0000
commit504edb70ab366d2b12dec0268d6095c56cb2c7ff (patch)
treee4c4d95ed012cb081ba9f6964654b885cff11b2b /src/lib
parentf37c0abc6884cc0eae47560ebf786960cbcf6791 (diff)
downloadedje-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.c51
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();