diff --git a/legacy/efreet/TODO b/legacy/efreet/TODO index 4ce528aabb..c060e64be0 100644 --- a/legacy/efreet/TODO +++ b/legacy/efreet/TODO @@ -21,9 +21,6 @@ TODO - If a theme has several icon types (png, xpm..) prefer the first in the extension list. -- Make efreet_util optional (the user must init/shutdown in addition to main - efreet). - Notes from the Menu Spec test ----------------------------- - We're appending the / to the menu names in the test case. We should diff --git a/legacy/efreet/src/lib/efreet.c b/legacy/efreet/src/lib/efreet.c index 7993a10af2..0b8f95606c 100644 --- a/legacy/efreet/src/lib/efreet.c +++ b/legacy/efreet/src/lib/efreet.c @@ -25,7 +25,6 @@ efreet_init(void) if (!efreet_ini_init()) return --init; if (!efreet_desktop_init()) return --init; if (!efreet_menu_init()) return --init; - if (!efreet_util_init()) return --init; return init; } @@ -39,7 +38,6 @@ int efreet_shutdown(void) { if (--init) return init; - efreet_util_shutdown(); efreet_menu_shutdown(); efreet_desktop_shutdown(); efreet_ini_shutdown(); diff --git a/legacy/efreet/src/lib/efreet_private.h b/legacy/efreet/src/lib/efreet_private.h index 5eb8996fa8..20754176a6 100644 --- a/legacy/efreet/src/lib/efreet_private.h +++ b/legacy/efreet/src/lib/efreet_private.h @@ -181,10 +181,6 @@ const char *efreet_lang_modifier_get(void); size_t efreet_array_cat(char *buffer, size_t size, const char *strs[]); -int efreet_util_init(void); -void efreet_util_shutdown(void); - - /** * @} */ diff --git a/legacy/efreet/src/lib/efreet_utils.c b/legacy/efreet/src/lib/efreet_utils.c index a4f98656ce..af215a0c3d 100644 --- a/legacy/efreet/src/lib/efreet_utils.c +++ b/legacy/efreet/src/lib/efreet_utils.c @@ -79,6 +79,8 @@ static Ecore_Idler *idler = NULL; static Ecore_List *monitors = NULL; +static int init = 0; + int EFREET_EVENT_DESKTOP_LIST_CHANGE = 0; int EFREET_EVENT_DESKTOP_CHANGE = 0; @@ -88,6 +90,8 @@ efreet_util_init(void) Efreet_Cache_Fill *fill; Ecore_List *dirs; + if (init++) return init; + if (!EFREET_EVENT_DESKTOP_LIST_CHANGE) EFREET_EVENT_DESKTOP_LIST_CHANGE = ecore_event_type_new(); if (!EFREET_EVENT_DESKTOP_CHANGE) @@ -124,12 +128,14 @@ efreet_util_init(void) ecore_list_goto_first(fill->dirs); } idler = ecore_idler_add(efreet_util_cache_fill, fill); - return 1; + return init; } -void +int efreet_util_shutdown(void) { + if (--init) return init; + if (idler) { Efreet_Cache_Fill *fill; @@ -145,6 +151,7 @@ efreet_util_shutdown(void) IF_FREE_HASH(file_id_by_desktop_path); IF_FREE_LIST(monitors); + return init; } char * diff --git a/legacy/efreet/src/lib/efreet_utils.h b/legacy/efreet/src/lib/efreet_utils.h index e9c4bd21e3..fe1a988746 100644 --- a/legacy/efreet/src/lib/efreet_utils.h +++ b/legacy/efreet/src/lib/efreet_utils.h @@ -31,6 +31,8 @@ Efreet_Desktop *efreet_util_desktop_exec_find(const char *exec); Efreet_Desktop *efreet_util_desktop_name_find(const char *name); Efreet_Desktop *efreet_util_desktop_generic_name_find(const char *generic_name); +int efreet_util_init(void); +int efreet_util_shutdown(void); Ecore_List *efreet_util_desktop_name_glob_list(const char *glob); Ecore_List *efreet_util_desktop_exec_glob_list(const char *glob); Ecore_List *efreet_util_desktop_generic_name_glob_list(const char *glob);