#ifdef HAVE_CONFIG_H # include #endif #include "Ecore.h" #include "Eina.h" #include "ephysics_private.h" #ifdef __cplusplus extern "C" { #endif int _ephysics_log_dom = -1; static int _ephysics_init_count = 0; EAPI int ephysics_init() { if (++_ephysics_init_count != 1) return _ephysics_init_count; if (!eina_init()) { EINA_LOG_CRIT("Couldn't init eina"); return --_ephysics_init_count; } if (!ecore_init()) { EINA_LOG_CRIT("Couldn't init ecore"); goto no_ecore; } _ephysics_log_dom = eina_log_domain_register("ephysics", EPHYSICS_LOG_COLOR); if (_ephysics_log_dom < 0) { EINA_LOG_CRIT("Couldn't create a log domain for ephysics"); goto no_log; } if (!ephysics_world_init()) { ERR("Couldn't initialize worlds"); goto no_world; } INF("EPhysics initialized"); return _ephysics_init_count; no_world: eina_log_domain_unregister(_ephysics_log_dom); _ephysics_log_dom = -1; no_log: ecore_shutdown(); no_ecore: eina_shutdown(); return --_ephysics_init_count; } EAPI int ephysics_shutdown() { if (--_ephysics_init_count != 0) return _ephysics_init_count; ephysics_world_shutdown(); INF("EPhysics shutdown"); eina_log_domain_unregister(_ephysics_log_dom); _ephysics_log_dom = -1; ecore_shutdown(); eina_shutdown(); return _ephysics_init_count; } #ifdef __cplusplus } #endif