2008-10-21 01:40:54 -07:00
|
|
|
#ifdef HAVE_CONFIG_H
|
|
|
|
# include "config.h"
|
|
|
|
#endif
|
|
|
|
|
2012-05-30 03:08:41 -07:00
|
|
|
#include <stdio.h>
|
2008-10-21 01:40:54 -07:00
|
|
|
#include <stdlib.h>
|
2004-03-29 03:58:57 -08:00
|
|
|
#include <time.h>
|
2004-03-24 01:48:28 -08:00
|
|
|
|
2008-10-21 01:40:54 -07:00
|
|
|
#include "Embryo.h"
|
|
|
|
#include "embryo_private.h"
|
|
|
|
|
2010-05-28 23:40:07 -07:00
|
|
|
static Embryo_Version _version = { VMAJ, VMIN, VMIC, VREV };
|
2016-02-22 09:16:16 -08:00
|
|
|
EAPI Embryo_Version * embryo_version = &_version;
|
2010-05-28 23:40:07 -07:00
|
|
|
|
2004-03-24 01:48:28 -08:00
|
|
|
static int _embryo_init_count = 0;
|
2015-12-29 16:14:36 -08:00
|
|
|
int _embryo_default_log_dom = -1;
|
2004-03-24 01:48:28 -08:00
|
|
|
|
|
|
|
/*** EXPORTED CALLS ***/
|
2004-09-25 07:37:39 -07:00
|
|
|
|
2006-01-06 10:02:51 -08:00
|
|
|
EAPI int
|
2004-03-24 01:48:28 -08:00
|
|
|
embryo_init(void)
|
|
|
|
{
|
2009-10-07 23:35:48 -07:00
|
|
|
if (++_embryo_init_count != 1)
|
|
|
|
return _embryo_init_count;
|
2008-04-11 12:06:18 -07:00
|
|
|
|
2004-03-29 03:58:57 -08:00
|
|
|
srand(time(NULL));
|
2008-04-11 12:06:18 -07:00
|
|
|
|
2015-12-29 16:14:36 -08:00
|
|
|
if (!eina_init())
|
|
|
|
return --_embryo_init_count;
|
|
|
|
|
|
|
|
_embryo_default_log_dom = eina_log_domain_register
|
|
|
|
("embryo", EMBRYO_DEFAULT_LOG_COLOR);
|
|
|
|
if (_embryo_default_log_dom < 0)
|
|
|
|
{
|
|
|
|
EINA_LOG_ERR("Embryo Can not create a general log domain.");
|
|
|
|
goto shutdown_eina;
|
|
|
|
}
|
|
|
|
|
|
|
|
eina_log_timing(_embryo_default_log_dom,
|
|
|
|
EINA_LOG_STATE_STOP,
|
|
|
|
EINA_LOG_STATE_INIT);
|
|
|
|
|
2004-03-24 01:48:28 -08:00
|
|
|
return _embryo_init_count;
|
2015-12-29 16:14:36 -08:00
|
|
|
|
|
|
|
shutdown_eina:
|
|
|
|
eina_shutdown();
|
|
|
|
return --_embryo_init_count;
|
2004-03-24 01:48:28 -08:00
|
|
|
}
|
|
|
|
|
2006-01-06 10:02:51 -08:00
|
|
|
EAPI int
|
2004-03-24 01:48:28 -08:00
|
|
|
embryo_shutdown(void)
|
|
|
|
{
|
2012-05-30 03:08:41 -07:00
|
|
|
if (_embryo_init_count <= 0)
|
|
|
|
{
|
|
|
|
printf("%s:%i Init count not greater than 0 in shutdown.", __FUNCTION__, __LINE__);
|
|
|
|
return 0;
|
|
|
|
}
|
2009-10-07 23:35:48 -07:00
|
|
|
if (--_embryo_init_count != 0)
|
|
|
|
return _embryo_init_count;
|
2008-04-11 12:06:18 -07:00
|
|
|
|
2015-12-29 16:14:36 -08:00
|
|
|
eina_log_timing(_embryo_default_log_dom,
|
|
|
|
EINA_LOG_STATE_START,
|
|
|
|
EINA_LOG_STATE_SHUTDOWN);
|
|
|
|
|
|
|
|
eina_log_domain_unregister(_embryo_default_log_dom);
|
|
|
|
_embryo_default_log_dom = -1;
|
2016-07-04 04:07:30 -07:00
|
|
|
eina_shutdown();
|
2015-12-29 16:14:36 -08:00
|
|
|
|
2004-03-24 01:48:28 -08:00
|
|
|
return _embryo_init_count;
|
|
|
|
}
|
2016-02-22 09:16:16 -08:00
|
|
|
|