efl/legacy/ephysics/src/lib/ephysics_main.cpp

84 lines
1.4 KiB
C++

#ifdef HAVE_CONFIG_H
# include <config.h>
#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