forked from enlightenment/efl
* API break: _shutdown() functions return an int, now
* simplify a bit and fix init/shutdown functions SVN revision: 42996
This commit is contained in:
parent
4072d0b23d
commit
285297dcdd
|
@ -45,7 +45,7 @@ extern "C" {
|
|||
|
||||
|
||||
EAPI int efreet_mime_init(void);
|
||||
EAPI void efreet_mime_shutdown(void);
|
||||
EAPI int efreet_mime_shutdown(void);
|
||||
|
||||
EAPI const char *efreet_mime_type_get(const char *file);
|
||||
EAPI const char *efreet_mime_magic_type_get(const char *file);
|
||||
|
|
|
@ -42,7 +42,7 @@ extern "C" {
|
|||
*/
|
||||
|
||||
EAPI int efreet_trash_init(void);
|
||||
EAPI void efreet_trash_shutdown(void);
|
||||
EAPI int efreet_trash_shutdown(void);
|
||||
|
||||
EAPI const char *efreet_trash_dir_get(void);
|
||||
EAPI int efreet_trash_delete_uri(Efreet_Uri *uri, int force_delete);
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
#include "efreet_private.h"
|
||||
#include "efreet_xml.h"
|
||||
|
||||
static int init = 0;
|
||||
static int _efreet_init_count = 0;
|
||||
static int efreet_parsed_locale = 0;
|
||||
static char *efreet_lang = NULL;
|
||||
static char *efreet_lang_country = NULL;
|
||||
|
@ -30,21 +30,55 @@ static int efreet_parse_locale_setting(const char *env);
|
|||
EAPI int
|
||||
efreet_init(void)
|
||||
{
|
||||
if (init++) return init;
|
||||
if (!eina_init()) return --init;
|
||||
_efreet_log_domain_global = eina_log_domain_register("Efreet",EFREET_DEFAULT_LOG_COLOR);
|
||||
if(_efreet_log_domain_global < 0)
|
||||
{
|
||||
printf("Efreet could create a general log domain.\n");
|
||||
return --init;
|
||||
}
|
||||
if (!efreet_base_init()) return --init;
|
||||
if (!efreet_xml_init()) return --init;
|
||||
if (!efreet_icon_init()) return --init;
|
||||
if (!efreet_ini_init()) return --init;
|
||||
if (!efreet_desktop_init()) return --init;
|
||||
if (!efreet_menu_init()) return --init;
|
||||
return init;
|
||||
if (++_efreet_init_count != 1)
|
||||
return _efreet_init_count;
|
||||
|
||||
if (!eina_init())
|
||||
return --_efreet_init_count;
|
||||
_efreet_log_domain_global = eina_log_domain_register("Efreet", EFREET_DEFAULT_LOG_COLOR);
|
||||
if (_efreet_log_domain_global < 0)
|
||||
{
|
||||
printf("Efreet could create a general log domain.\n");
|
||||
|
||||
goto shutdown_eina;
|
||||
}
|
||||
|
||||
if (!efreet_base_init())
|
||||
goto unregister_log_domain;
|
||||
|
||||
if (!efreet_xml_init())
|
||||
goto shutdown_efreet_base;
|
||||
|
||||
if (!efreet_icon_init())
|
||||
goto shutdown_efreet_xml;
|
||||
|
||||
if (!efreet_ini_init())
|
||||
goto shutdown_efreet_icon;
|
||||
|
||||
if (!efreet_desktop_init())
|
||||
goto shutdown_efreet_ini;
|
||||
|
||||
if (!efreet_menu_init())
|
||||
goto shutdown_efreet_desktop;
|
||||
|
||||
return _efreet_init_count;
|
||||
|
||||
shutdown_efreet_desktop:
|
||||
efreet_desktop_shutdown();
|
||||
shutdown_efreet_ini:
|
||||
efreet_ini_shutdown();
|
||||
shutdown_efreet_icon:
|
||||
efreet_icon_shutdown();
|
||||
shutdown_efreet_xml:
|
||||
efreet_xml_shutdown();
|
||||
shutdown_efreet_base:
|
||||
efreet_base_shutdown();
|
||||
unregister_log_domain:
|
||||
eina_log_domain_unregister(_efreet_log_domain_global);
|
||||
shutdown_eina:
|
||||
eina_shutdown();
|
||||
|
||||
return --_efreet_init_count;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -56,7 +90,9 @@ efreet_init(void)
|
|||
EAPI int
|
||||
efreet_shutdown(void)
|
||||
{
|
||||
if (--init) return init;
|
||||
if (--_efreet_init_count != 0)
|
||||
return _efreet_init_count;
|
||||
|
||||
efreet_menu_shutdown();
|
||||
efreet_desktop_shutdown();
|
||||
efreet_ini_shutdown();
|
||||
|
@ -71,7 +107,7 @@ efreet_shutdown(void)
|
|||
IF_FREE(efreet_lang_modifier);
|
||||
efreet_parsed_locale = 0; /* reset this in case they init efreet again */
|
||||
|
||||
return init;
|
||||
return _efreet_init_count;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -44,14 +44,12 @@ static Eina_List *efreet_dirs_get(const char *key,
|
|||
int
|
||||
efreet_base_init(void)
|
||||
{
|
||||
if (!eina_init()) return 0;
|
||||
_efreet_base_log_dom = eina_log_domain_register("Efreet_base",EFREET_DEFAULT_LOG_COLOR);
|
||||
if(_efreet_base_log_dom < 0)
|
||||
{
|
||||
_efreet_base_log_dom = eina_log_domain_register("Efreet_base", EFREET_DEFAULT_LOG_COLOR);
|
||||
if (_efreet_base_log_dom < 0)
|
||||
{
|
||||
ERROR("Efreet: Could not create a log domain for efreet_base.\n");
|
||||
eina_shutdown();
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
@ -71,7 +69,7 @@ efreet_base_shutdown(void)
|
|||
IF_FREE_LIST(xdg_data_dirs, eina_stringshare_del);
|
||||
IF_FREE_LIST(xdg_config_dirs, eina_stringshare_del);
|
||||
|
||||
eina_shutdown();
|
||||
eina_log_domain_unregister(_efreet_base_log_dom);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -44,7 +44,6 @@ static Eina_List *efreet_desktop_types = NULL;
|
|||
*/
|
||||
static int efreet_desktop_command_file_id = 0;
|
||||
|
||||
static int init = 0;
|
||||
static int cache_flush = 0;
|
||||
|
||||
#ifdef EFREET_MODULE_LOG_DOM
|
||||
|
@ -142,16 +141,17 @@ static void *efreet_desktop_command_execs_process(Efreet_Desktop_Command *comman
|
|||
int
|
||||
efreet_desktop_init(void)
|
||||
{
|
||||
if (init++) return init;
|
||||
if (!eina_init()) return --init;
|
||||
_efreet_desktop_log_dom = eina_log_domain_register("Efreet_desktop",EFREET_DEFAULT_LOG_COLOR);
|
||||
if(_efreet_desktop_log_dom<0)
|
||||
{
|
||||
_efreet_desktop_log_dom = eina_log_domain_register("Efreet_desktop", EFREET_DEFAULT_LOG_COLOR);
|
||||
if (_efreet_desktop_log_dom < 0)
|
||||
{
|
||||
ERROR("Efreet: Could not create a log domain for Efreet_desktop");
|
||||
eina_shutdown();
|
||||
return --init;
|
||||
}
|
||||
if (!ecore_file_init()) return --init;
|
||||
return 0;
|
||||
}
|
||||
if (!ecore_file_init())
|
||||
{
|
||||
eina_log_domain_unregister(_efreet_desktop_log_dom);
|
||||
return 0;
|
||||
}
|
||||
|
||||
efreet_desktop_cache = eina_hash_string_superfast_new(NULL);
|
||||
efreet_desktop_types = NULL;
|
||||
|
@ -166,7 +166,7 @@ efreet_desktop_init(void)
|
|||
EFREET_DESKTOP_TYPE_DIRECTORY = efreet_desktop_type_add("Directory", NULL,
|
||||
NULL, NULL);
|
||||
|
||||
return init;
|
||||
return 1;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -174,15 +174,11 @@ efreet_desktop_init(void)
|
|||
* @returns the number of initializations left for this system
|
||||
* @brief Attempts to shut down the subsystem if nothing else is using it
|
||||
*/
|
||||
int
|
||||
void
|
||||
efreet_desktop_shutdown(void)
|
||||
{
|
||||
Efreet_Desktop_Type_Info *info;
|
||||
|
||||
if (--init) return init;
|
||||
ecore_file_shutdown();
|
||||
eina_shutdown();
|
||||
eina_log_domain_unregister(_efreet_desktop_log_dom);
|
||||
IF_RELEASE(desktop_environment);
|
||||
IF_FREE_HASH(efreet_desktop_cache);
|
||||
while (efreet_desktop_types)
|
||||
|
@ -192,8 +188,8 @@ efreet_desktop_shutdown(void)
|
|||
efreet_desktop_types = eina_list_remove_list(efreet_desktop_types,
|
||||
efreet_desktop_types);
|
||||
}
|
||||
|
||||
return init;
|
||||
ecore_file_shutdown();
|
||||
eina_log_domain_unregister(_efreet_desktop_log_dom);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -26,8 +26,6 @@ static Eina_List *efreet_icon_extensions = NULL;
|
|||
static Eina_List *efreet_extra_icon_dirs = NULL;
|
||||
static Eina_Hash *efreet_icon_cache = NULL;
|
||||
|
||||
static int efreet_icon_init_count = 0;
|
||||
|
||||
typedef struct Efreet_Icon_Cache Efreet_Icon_Cache;
|
||||
struct Efreet_Icon_Cache
|
||||
{
|
||||
|
@ -121,9 +119,6 @@ _efreet_icon_cache_list_destroy(Eina_List *list)
|
|||
int
|
||||
efreet_icon_init(void)
|
||||
{
|
||||
if (efreet_icon_init_count++ > 0)
|
||||
return efreet_icon_init_count;
|
||||
|
||||
if (!efreet_icon_themes)
|
||||
{
|
||||
const char *default_exts[] = {".png", ".xpm", NULL};
|
||||
|
@ -131,7 +126,6 @@ efreet_icon_init(void)
|
|||
|
||||
if (!ecore_init())
|
||||
{
|
||||
efreet_icon_init_count--;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -156,9 +150,6 @@ efreet_icon_init(void)
|
|||
void
|
||||
efreet_icon_shutdown(void)
|
||||
{
|
||||
if (--efreet_icon_init_count)
|
||||
return;
|
||||
|
||||
IF_FREE(efreet_icon_user_dir);
|
||||
IF_FREE(efreet_icon_deprecated_user_dir);
|
||||
|
||||
|
@ -175,7 +166,6 @@ efreet_icon_shutdown(void)
|
|||
}
|
||||
|
||||
ecore_shutdown();
|
||||
efreet_icon_init_count = 0;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -46,11 +46,6 @@ efreet_ini_section_save(const Eina_Hash *hash, const void *key, void *data, void
|
|||
static Eina_Bool
|
||||
efreet_ini_value_save(const Eina_Hash *hash, const void *key, void *data, void *fdata);
|
||||
|
||||
/**
|
||||
* The number of times the Ini subsytem has been initialized
|
||||
*/
|
||||
static int init = 0;
|
||||
|
||||
/**
|
||||
* @internal
|
||||
* @return Returns > 0 on success or 0 on failure
|
||||
|
@ -59,16 +54,13 @@ static int init = 0;
|
|||
int
|
||||
efreet_ini_init(void)
|
||||
{
|
||||
if (init++) return init;
|
||||
if (!eina_init()) return --init;
|
||||
_efreet_ini_log_dom = eina_log_domain_register("Efreet_init",EFREET_DEFAULT_LOG_COLOR);
|
||||
if(_efreet_ini_log_dom < 0)
|
||||
{
|
||||
_efreet_ini_log_dom = eina_log_domain_register("Efreet_init", EFREET_DEFAULT_LOG_COLOR);
|
||||
if (_efreet_ini_log_dom < 0)
|
||||
{
|
||||
ERROR("Efreet: Could not create a log domain for efreet_init");
|
||||
eina_shutdown();
|
||||
return --init;
|
||||
}
|
||||
return init;
|
||||
return 0;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -76,13 +68,10 @@ efreet_ini_init(void)
|
|||
* @returns the number of initializations left for this system
|
||||
* @brief Attempts to shut down the subsystem if nothing else is using it
|
||||
*/
|
||||
int
|
||||
void
|
||||
efreet_ini_shutdown(void)
|
||||
{
|
||||
if (--init) return init;
|
||||
eina_log_domain_unregister(_efreet_ini_log_dom);
|
||||
eina_shutdown();
|
||||
return init;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -460,15 +460,18 @@ efreet_menu_init(void)
|
|||
{NULL, NULL}
|
||||
};
|
||||
|
||||
if (!eina_init()) return 0;
|
||||
_efreet_menu_log_dom = eina_log_domain_register("Efreet_menu",EFREET_DEFAULT_LOG_COLOR);
|
||||
if(_efreet_menu_log_dom < 0)
|
||||
{
|
||||
ERROR("Efreet: Could not create a log domain for Efreet_mnenu");
|
||||
eina_shutdown();
|
||||
_efreet_menu_log_dom = eina_log_domain_register("Efreet_menu", EFREET_DEFAULT_LOG_COLOR);
|
||||
if (_efreet_menu_log_dom < 0)
|
||||
{
|
||||
ERROR("Efreet: Could not create a log domain for Efreet_menu");
|
||||
return 0;
|
||||
}
|
||||
if (!efreet_xml_init()) return 0;
|
||||
}
|
||||
if (!efreet_xml_init())
|
||||
{
|
||||
ERROR("Efreet: Could not init xml module");
|
||||
eina_log_domain_unregister(_efreet_menu_log_dom);
|
||||
return 0;
|
||||
}
|
||||
|
||||
efreet_menu_handle_cbs = eina_hash_string_superfast_new(NULL);
|
||||
efreet_menu_filter_cbs = eina_hash_string_superfast_new(NULL);
|
||||
|
@ -476,7 +479,11 @@ efreet_menu_init(void)
|
|||
efreet_menu_layout_cbs = eina_hash_string_superfast_new(NULL);
|
||||
if (!efreet_menu_handle_cbs || !efreet_menu_filter_cbs
|
||||
|| !efreet_menu_move_cbs || !efreet_menu_layout_cbs)
|
||||
return 0;
|
||||
{
|
||||
efreet_xml_shutdown();
|
||||
eina_log_domain_unregister(_efreet_menu_log_dom);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* set Menu into it's own so we can check the XML is valid before trying
|
||||
* to handle it */
|
||||
|
@ -589,7 +596,6 @@ efreet_menu_shutdown(void)
|
|||
|
||||
efreet_xml_shutdown();
|
||||
eina_log_domain_unregister(_efreet_menu_log_dom);
|
||||
eina_shutdown();
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -54,7 +54,7 @@ static Eina_Hash *wild = NULL; /* contains *.ext and mime.types globs*/
|
|||
static Eina_Hash *monitors = NULL; /* contains file monitors */
|
||||
static Eina_Hash *mime_icons = NULL; /* contains cache with mime->icons */
|
||||
static Eina_Inlist *mime_icons_lru = NULL;
|
||||
static unsigned int _init_count = 0;
|
||||
static unsigned int _efreet_mime_init_count = 0;
|
||||
|
||||
/**
|
||||
* @internal
|
||||
|
@ -202,26 +202,25 @@ static void efreet_mime_icons_debug(void);
|
|||
EAPI int
|
||||
efreet_mime_init(void)
|
||||
{
|
||||
_init_count++;
|
||||
if (_init_count > 1)
|
||||
return 1;
|
||||
if (++_efreet_mime_init_count != 1)
|
||||
return _efreet_mime_init_count;
|
||||
|
||||
if (!ecore_init())
|
||||
return 0;
|
||||
return --_efreet_mime_init_count;
|
||||
|
||||
if (!ecore_file_init())
|
||||
return 0;
|
||||
goto shutdown_ecore;
|
||||
|
||||
if (!efreet_init())
|
||||
return 0;
|
||||
goto shutdown_ecore_file;
|
||||
|
||||
_efreet_mime_log_dom = eina_log_domain_register("Efreet_mime",EFREET_DEFAULT_LOG_COLOR);
|
||||
_efreet_mime_log_dom = eina_log_domain_register("Efreet_mime", EFREET_DEFAULT_LOG_COLOR);
|
||||
|
||||
if(_efreet_mime_log_dom < 0)
|
||||
{
|
||||
if (_efreet_mime_log_dom < 0)
|
||||
{
|
||||
ERROR("Efreet: Could not create a log domain for Efreet_mime.");
|
||||
return 0;
|
||||
}
|
||||
goto shutdown_efreet;
|
||||
}
|
||||
|
||||
efreet_mime_endianess = efreet_mime_endian_check();
|
||||
|
||||
|
@ -230,23 +229,31 @@ efreet_mime_init(void)
|
|||
efreet_mime_type_cache_clear();
|
||||
|
||||
if (!efreet_mime_init_files())
|
||||
return 0;
|
||||
goto unregister_log_domain;
|
||||
|
||||
return 1;
|
||||
return _efreet_mime_init_count;
|
||||
|
||||
unregister_log_domain:
|
||||
eina_log_domain_unregister(_efreet_mime_log_dom);
|
||||
shutdown_efreet:
|
||||
efreet_shutdown();
|
||||
shutdown_ecore_file:
|
||||
ecore_file_shutdown();
|
||||
shutdown_ecore:
|
||||
ecore_shutdown();
|
||||
|
||||
return --_efreet_mime_init_count;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return Returns no value
|
||||
* @brief Cleans up the efreet mime settings system
|
||||
*/
|
||||
EAPI void
|
||||
EAPI int
|
||||
efreet_mime_shutdown(void)
|
||||
{
|
||||
if (_init_count == 0)
|
||||
return;
|
||||
_init_count--;
|
||||
if (_init_count > 0)
|
||||
return;
|
||||
if (--_efreet_mime_init_count != 0)
|
||||
return _efreet_mime_init_count;
|
||||
|
||||
efreet_mime_icons_debug();
|
||||
|
||||
|
@ -259,6 +266,8 @@ efreet_mime_shutdown(void)
|
|||
efreet_shutdown();
|
||||
ecore_file_shutdown();
|
||||
ecore_shutdown();
|
||||
|
||||
return _efreet_mime_init_count;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -192,10 +192,10 @@ Eina_List *efreet_default_dirs_get(const char *user_dir,
|
|||
const char *suffix);
|
||||
|
||||
int efreet_ini_init(void);
|
||||
int efreet_ini_shutdown(void);
|
||||
void efreet_ini_shutdown(void);
|
||||
|
||||
int efreet_desktop_init(void);
|
||||
int efreet_desktop_shutdown(void);
|
||||
void efreet_desktop_shutdown(void);
|
||||
|
||||
const char *efreet_home_dir_get(void);
|
||||
|
||||
|
|
|
@ -14,6 +14,7 @@
|
|||
#include "Efreet_Trash.h"
|
||||
#include "efreet_private.h"
|
||||
|
||||
static unsigned int _efreet_trash_init_count = 0;
|
||||
static const char *efreet_trash_dir = NULL;
|
||||
|
||||
/* define macros and variable for using the eina logging system */
|
||||
|
@ -31,24 +32,37 @@ static int _efreet_trash_log_dom = -1;
|
|||
EAPI int
|
||||
efreet_trash_init(void)
|
||||
{
|
||||
_efreet_trash_log_dom = eina_log_domain_register("Efreet_trash",EFREET_DEFAULT_LOG_COLOR);
|
||||
if(_efreet_trash_log_dom < 0)
|
||||
{
|
||||
if (++_efreet_trash_init_count != 1)
|
||||
return _efreet_trash_init_count;
|
||||
|
||||
if (!eina_init())
|
||||
return --_efreet_trash_init_count;
|
||||
|
||||
_efreet_trash_log_dom = eina_log_domain_register("Efreet_trash", EFREET_DEFAULT_LOG_COLOR);
|
||||
if (_efreet_trash_log_dom < 0)
|
||||
{
|
||||
ERROR("Efreet: Could not create a log domain for Efreet_trash");
|
||||
return 0;
|
||||
eina_shutdown();
|
||||
return --_efreet_trash_init_count;
|
||||
}
|
||||
return 1;
|
||||
return _efreet_trash_init_count;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return Returns no value
|
||||
* @brief Cleans up the efreet trash system
|
||||
*/
|
||||
EAPI void
|
||||
EAPI int
|
||||
efreet_trash_shutdown(void)
|
||||
{
|
||||
if (--_efreet_trash_init_count != 0)
|
||||
return _efreet_trash_init_count;
|
||||
|
||||
IF_RELEASE(efreet_trash_dir);
|
||||
eina_log_domain_unregister(_efreet_trash_log_dom);
|
||||
eina_shutdown();
|
||||
|
||||
return _efreet_trash_init_count;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -36,7 +36,6 @@ static void efreet_xml_cb_attribute_free(void *data);
|
|||
static void efreet_xml_comment_skip(char **data, int *size);
|
||||
|
||||
static int error = 0;
|
||||
static int init = 0;
|
||||
|
||||
/* define macros and variable for using the eina logging system */
|
||||
|
||||
|
@ -55,15 +54,13 @@ static int _efreet_xml_log_dom = -1;
|
|||
int
|
||||
efreet_xml_init(void)
|
||||
{
|
||||
if (init++) return init;
|
||||
if (!eina_init()) return --init;
|
||||
_efreet_xml_log_dom = eina_log_domain_register("Efreet_xml",EFREET_DEFAULT_LOG_COLOR);
|
||||
if(_efreet_xml_log_dom < 0)
|
||||
{
|
||||
_efreet_xml_log_dom = eina_log_domain_register("Efreet_xml", EFREET_DEFAULT_LOG_COLOR);
|
||||
if (_efreet_xml_log_dom < 0)
|
||||
{
|
||||
ERROR("Efreet: Could not create a log domain for Efreet_xml.");
|
||||
return 0;
|
||||
}
|
||||
return init;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -71,13 +68,10 @@ efreet_xml_init(void)
|
|||
* @returns the number of initializations left for this system
|
||||
* @brief Attempts to shut down the subsystem if nothing else is using it
|
||||
*/
|
||||
int
|
||||
void
|
||||
efreet_xml_shutdown(void)
|
||||
{
|
||||
if (--init) return init;
|
||||
eina_log_domain_unregister(_efreet_xml_log_dom);
|
||||
eina_shutdown();
|
||||
return init;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -46,7 +46,7 @@ struct Efreet_Xml
|
|||
};
|
||||
|
||||
int efreet_xml_init(void);
|
||||
int efreet_xml_shutdown(void);
|
||||
void efreet_xml_shutdown(void);
|
||||
|
||||
Efreet_Xml *efreet_xml_new(const char *file);
|
||||
void efreet_xml_del(Efreet_Xml *xml);
|
||||
|
|
Loading…
Reference in New Issue