forked from enlightenment/efl
efreet: Init efreet_menu_prefix in init
Makes efreet_menu_prefix access threadsafe
This commit is contained in:
parent
3190e526f4
commit
e8ff0e7b68
|
@ -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_move_cbs = NULL;
|
||||||
static Eina_Hash *efreet_menu_layout_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,
|
static Efreet_Menu_Internal *efreet_menu_by_name_find(Efreet_Menu_Internal *internal,
|
||||||
const char *name,
|
const char *name,
|
||||||
Efreet_Menu_Internal **parent);
|
Efreet_Menu_Internal **parent);
|
||||||
|
@ -385,6 +383,9 @@ efreet_menu_init(void)
|
||||||
return 0;
|
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_handle_cbs = eina_hash_string_superfast_new(NULL);
|
||||||
efreet_menu_filter_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);
|
efreet_menu_move_cbs = eina_hash_string_superfast_new(NULL);
|
||||||
|
@ -524,7 +525,7 @@ efreet_menu_get(void)
|
||||||
|
|
||||||
/* check the users config directory first */
|
/* check the users config directory first */
|
||||||
snprintf(menu, sizeof(menu), "%s/menus/%sapplications.menu",
|
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))
|
if (ecore_file_exists(menu))
|
||||||
return efreet_menu_parse(menu);
|
return efreet_menu_parse(menu);
|
||||||
|
|
||||||
|
@ -533,7 +534,7 @@ efreet_menu_get(void)
|
||||||
EINA_LIST_FOREACH(config_dirs, l, dir)
|
EINA_LIST_FOREACH(config_dirs, l, dir)
|
||||||
{
|
{
|
||||||
snprintf(menu, sizeof(menu), "%s/menus/%sapplications.menu",
|
snprintf(menu, sizeof(menu), "%s/menus/%sapplications.menu",
|
||||||
dir, efreet_menu_prefix_get());
|
dir, efreet_menu_prefix);
|
||||||
if (ecore_file_exists(menu))
|
if (ecore_file_exists(menu))
|
||||||
return efreet_menu_parse(menu);
|
return efreet_menu_parse(menu);
|
||||||
}
|
}
|
||||||
|
@ -879,22 +880,6 @@ efreet_menu_internal_free(Efreet_Menu_Internal *internal)
|
||||||
FREE(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
|
* @internal
|
||||||
* @param menu The menu to populate
|
* @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
|
#ifndef STRICT_SPEC
|
||||||
char parent_path[PATH_MAX];
|
char parent_path[PATH_MAX];
|
||||||
#endif
|
#endif
|
||||||
const char *prefix;
|
|
||||||
|
|
||||||
if (!parent || !xml) return 0;
|
if (!parent || !xml) return 0;
|
||||||
|
|
||||||
prefix = efreet_menu_prefix_get();
|
if (!strcmp(efreet_menu_prefix, "gnome-") &&
|
||||||
if (!strcmp(prefix, "gnome-") &&
|
|
||||||
(!strcmp(parent->file.name, "gnome-applications.menu")))
|
(!strcmp(parent->file.name, "gnome-applications.menu")))
|
||||||
{
|
{
|
||||||
p = alloca(sizeof("applications"));
|
p = alloca(sizeof("applications"));
|
||||||
memcpy(p, "applications", 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"))))
|
(!strcmp(parent->file.name, "kde-applications.menu"))))
|
||||||
{
|
{
|
||||||
p = alloca(sizeof("applications"));
|
p = alloca(sizeof("applications"));
|
||||||
|
|
Loading…
Reference in New Issue