efreet: Init efreet_menu_prefix in init

Makes efreet_menu_prefix access threadsafe
This commit is contained in:
Sebastian Dransfeld 2013-06-20 09:58:41 +02:00
parent 3190e526f4
commit e8ff0e7b68
1 changed files with 7 additions and 24 deletions

View File

@ -164,8 +164,6 @@ static Eina_Hash *efreet_menu_filter_cbs = NULL;
static Eina_Hash *efreet_menu_move_cbs = NULL;
static Eina_Hash *efreet_menu_layout_cbs = NULL;
static const char *efreet_menu_prefix_get(void);
static Efreet_Menu_Internal *efreet_menu_by_name_find(Efreet_Menu_Internal *internal,
const char *name,
Efreet_Menu_Internal **parent);
@ -385,6 +383,9 @@ efreet_menu_init(void)
return 0;
}
efreet_menu_prefix = getenv("XDG_MENU_PREFIX");
if (!efreet_menu_prefix) efreet_menu_prefix = "";
efreet_menu_handle_cbs = eina_hash_string_superfast_new(NULL);
efreet_menu_filter_cbs = eina_hash_string_superfast_new(NULL);
efreet_menu_move_cbs = eina_hash_string_superfast_new(NULL);
@ -524,7 +525,7 @@ efreet_menu_get(void)
/* check the users config directory first */
snprintf(menu, sizeof(menu), "%s/menus/%sapplications.menu",
efreet_config_home_get(), efreet_menu_prefix_get());
efreet_config_home_get(), efreet_menu_prefix);
if (ecore_file_exists(menu))
return efreet_menu_parse(menu);
@ -533,7 +534,7 @@ efreet_menu_get(void)
EINA_LIST_FOREACH(config_dirs, l, dir)
{
snprintf(menu, sizeof(menu), "%s/menus/%sapplications.menu",
dir, efreet_menu_prefix_get());
dir, efreet_menu_prefix);
if (ecore_file_exists(menu))
return efreet_menu_parse(menu);
}
@ -879,22 +880,6 @@ efreet_menu_internal_free(Efreet_Menu_Internal *internal)
FREE(internal);
}
/**
* @internal
* @return Returns the XDG_MENU_PREFIX env variable or "" if none set
* @brief Retrieves the XDG_MENU_PREFIX or "" if not set.
*/
static const char *
efreet_menu_prefix_get(void)
{
if (efreet_menu_prefix) return efreet_menu_prefix;
efreet_menu_prefix = getenv("XDG_MENU_PREFIX");
if (!efreet_menu_prefix) efreet_menu_prefix = "";
return efreet_menu_prefix;
}
/**
* @internal
* @param menu The menu to populate
@ -1595,18 +1580,16 @@ efreet_menu_handle_default_merge_dirs(Efreet_Menu_Internal *parent, Efreet_Xml *
#ifndef STRICT_SPEC
char parent_path[PATH_MAX];
#endif
const char *prefix;
if (!parent || !xml) return 0;
prefix = efreet_menu_prefix_get();
if (!strcmp(prefix, "gnome-") &&
if (!strcmp(efreet_menu_prefix, "gnome-") &&
(!strcmp(parent->file.name, "gnome-applications.menu")))
{
p = alloca(sizeof("applications"));
memcpy(p, "applications", sizeof("applications"));
}
else if ((!strcmp(prefix, "kde-") &&
else if ((!strcmp(efreet_menu_prefix, "kde-") &&
(!strcmp(parent->file.name, "kde-applications.menu"))))
{
p = alloca(sizeof("applications"));