Make util optional.
authorSebastian Dransfeld <sd@tango.flipp.net>
Mon, 9 Apr 2007 12:16:09 +0000 (12:16 +0000)
committerSebastian Dransfeld <sd@tango.flipp.net>
Mon, 9 Apr 2007 12:16:09 +0000 (12:16 +0000)
SVN revision: 29452

legacy/efreet/TODO
legacy/efreet/src/lib/efreet.c
legacy/efreet/src/lib/efreet_private.h
legacy/efreet/src/lib/efreet_utils.c
legacy/efreet/src/lib/efreet_utils.h

index 4ce528a..c060e64 100644 (file)
@@ -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
index 7993a10..0b8f956 100644 (file)
@@ -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();
index 5eb8996..2075417 100644 (file)
@@ -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);
-
-
 /**
  * @}
  */
index a4f9865..af215a0 100644 (file)
@@ -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 *
index e9c4bd2..fe1a988 100644 (file)
@@ -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);