efreet: Add cache build event
authorenglebass <englebass@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Thu, 18 Aug 2011 07:34:19 +0000 (07:34 +0000)
committerenglebass <englebass@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Thu, 18 Aug 2011 07:34:19 +0000 (07:34 +0000)
And listen for this event in e_startup to check for cache build
completion.

git-svn-id: svn+ssh://svn.enlightenment.org/var/svn/e/trunk/efreet@62549 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33

src/lib/efreet_cache.c
src/lib/efreet_desktop.h

index 0412431..4b4e3fd 100644 (file)
@@ -114,6 +114,7 @@ static int strcmplen(const void *data1, const void *data2);
 
 EAPI int EFREET_EVENT_ICON_CACHE_UPDATE = 0;
 EAPI int EFREET_EVENT_DESKTOP_CACHE_UPDATE = 0;
+EAPI int EFREET_EVENT_DESKTOP_CACHE_BUILD = 0;
 
 int
 efreet_cache_init(void)
@@ -126,6 +127,7 @@ efreet_cache_init(void)
 
     EFREET_EVENT_ICON_CACHE_UPDATE = ecore_event_type_new();
     EFREET_EVENT_DESKTOP_CACHE_UPDATE = ecore_event_type_new();
+    EFREET_EVENT_DESKTOP_CACHE_BUILD = ecore_event_type_new();
 
     themes = eina_hash_string_superfast_new(EINA_FREE_CB(efreet_cache_icon_theme_free));
     icons = eina_hash_string_superfast_new(EINA_FREE_CB(efreet_cache_icon_free));
@@ -1076,11 +1078,10 @@ cache_update_cb(void *data __UNUSED__, Ecore_File_Monitor *em __UNUSED__,
     if (!file) return;
     if (!strcmp(file, "desktop_data.update"))
     {
+        ev = NEW(Efreet_Event_Cache_Update, 1);
+        if (!ev) goto error;
         if (cache_check_change(path))
         {
-            ev = NEW(Efreet_Event_Cache_Update, 1);
-            if (!ev) goto error;
-
             IF_RELEASE(util_cache_names_key);
             IF_RELEASE(util_cache_hash_key);
 
@@ -1109,7 +1110,7 @@ cache_update_cb(void *data __UNUSED__, Ecore_File_Monitor *em __UNUSED__,
 
             ecore_event_add(EFREET_EVENT_DESKTOP_CACHE_UPDATE, ev, desktop_cache_update_free, d);
         }
-
+        ecore_event_add(EFREET_EVENT_DESKTOP_CACHE_BUILD, NULL, NULL, NULL);
         /* TODO: Check if desktop_dirs_add exists, and rebuild cache if */
     }
     else if (!strcmp(file, "icon_data.update"))
index c191feb..35dbf4a 100644 (file)
@@ -31,6 +31,11 @@ EAPI extern int EFREET_DESKTOP_TYPE_DIRECTORY;
  * be invalidated.
  */
 EAPI extern int EFREET_EVENT_DESKTOP_CACHE_UPDATE;
+/**
+ * Event id for cache build complete.
+ * @since 1.1.0
+ */
+EAPI extern int EFREET_EVENT_DESKTOP_CACHE_BUILD;
 
 /**
  * Efreet_Desktop