Enlightenment CVS committal

Author  : onefang
Project : e17
Module  : libs/ecore

Dir     : e17/libs/ecore/src/lib/ecore_desktop


Modified Files:
        Ecore_Desktop.h ecore_desktop.c ecore_desktop_menu.c 
        ecore_desktop_paths.c ecore_desktop_xmlame.c 


Log Message:
Check the timestamps on .desktop files to see if the cache is still valid.
The entire applicition caching system will be rewritten soon, so
consider this a temporary fix.

===================================================================
RCS file: /cvs/e/e17/libs/ecore/src/lib/ecore_desktop/Ecore_Desktop.h,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -3 -r1.17 -r1.18
--- Ecore_Desktop.h     31 Aug 2006 12:10:09 -0000      1.17
+++ Ecore_Desktop.h     4 Sep 2006 10:57:42 -0000       1.18
@@ -2,6 +2,8 @@
 # define _ECORE_DESKTOP_H
 
 #include <Ecore_Data.h>
+#include <sys/types.h>
+
 
 /**
  * @file Ecore_Desktop.h
@@ -56,6 +58,8 @@
    char               *startup;
    char               *window_class;
    int                 allocated;      /* FIXME: NoDisplay, Hidden */
+   /* Actually calling this st_mtime causes compile issues, must be some 
strange macros at work. */
+   time_t              mtime;           /* For checking if the cache is valid. 
*/
 };
 typedef struct _Ecore_Desktop Ecore_Desktop;
 
===================================================================
RCS file: /cvs/e/e17/libs/ecore/src/lib/ecore_desktop/ecore_desktop.c,v
retrieving revision 1.24
retrieving revision 1.25
diff -u -3 -r1.24 -r1.25
--- ecore_desktop.c     3 Sep 2006 17:22:46 -0000       1.24
+++ ecore_desktop.c     4 Sep 2006 10:57:42 -0000       1.25
@@ -1,13 +1,13 @@
 /*
  * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
  */
-#include <ctype.h>
-#include <sys/types.h>
-#include <sys/stat.h>
 
 #include "Ecore_Desktop.h"
 #include "ecore_desktop_private.h"
 
+#include <ctype.h>
+#include <sys/stat.h>
+
 Ecore_List         *ecore_desktop_paths_config = NULL;
 Ecore_List         *ecore_desktop_paths_menus = NULL;
 Ecore_List         *ecore_desktop_paths_directories = NULL;
@@ -165,8 +165,23 @@
 ecore_desktop_get(const char *file, const char *lang)
 {
    Ecore_Desktop      *result;
+   struct stat         st;
+   int                 stated = 0;
 
    result = (Ecore_Desktop *) ecore_hash_get(desktop_cache, (char *) file);
+   /* Check if the cache is still valid. */
+   if (result)
+      {
+         if (stat(result->original_path, &st) >= 0)
+        {
+           if(st.st_mtime > result->mtime)
+           {
+              ecore_hash_remove(desktop_cache, result->original_path);
+              result = NULL;
+              stated = 1;
+           }
+        }
+      }
    if (!result)
      {
        result = calloc(1, sizeof(Ecore_Desktop));
@@ -176,6 +191,12 @@
             if (lang)
                result->original_lang = strdup(lang);
             result->data = ecore_desktop_ini_get(result->original_path);
+            /* Timestamp the cache, and no need to stat the file twice if the 
cache was stale. */
+             if ((stated) || (stat(result->original_path, &st) >= 0))
+            {
+               result->mtime = st.st_mtime;
+               stated = 1;
+            }
             if (result->data)
               {
                  result->group =
===================================================================
RCS file: /cvs/e/e17/libs/ecore/src/lib/ecore_desktop/ecore_desktop_menu.c,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -3 -r1.12 -r1.13
--- ecore_desktop_menu.c        3 Sep 2006 11:38:56 -0000       1.12
+++ ecore_desktop_menu.c        4 Sep 2006 10:57:42 -0000       1.13
@@ -6,15 +6,15 @@
  * optomize into "ugly but fast".
  *
  */
-#include <dirent.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <libgen.h>
 
 #include <Ecore.h>
 
 #include "Ecore_Desktop.h"
 #include "ecore_desktop_private.h"
+
+#include <dirent.h>
+#include <sys/stat.h>
+#include <libgen.h>
 
 //#define DEBUG 1
 
===================================================================
RCS file: /cvs/e/e17/libs/ecore/src/lib/ecore_desktop/ecore_desktop_paths.c,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -3 -r1.17 -r1.18
--- ecore_desktop_paths.c       2 Sep 2006 04:19:25 -0000       1.17
+++ ecore_desktop_paths.c       4 Sep 2006 10:57:42 -0000       1.18
@@ -6,16 +6,16 @@
  * excess directory from the paths.
  */
 
+#include <Ecore.h>
+
+#include "Ecore_Desktop.h"
+#include "ecore_desktop_private.h"
+
 #include <dirent.h>
-#include <sys/types.h>
 #include <sys/stat.h>
 #include <libgen.h>
 #include <strings.h>
 
-#include <Ecore.h>
-
-#include "Ecore_Desktop.h"
-#include "ecore_desktop_private.h"
 
 
 /* This really slows things down and no doubt drags in some KDE bloat at start 
up.
===================================================================
RCS file: /cvs/e/e17/libs/ecore/src/lib/ecore_desktop/ecore_desktop_xmlame.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -3 -r1.2 -r1.3
--- ecore_desktop_xmlame.c      14 Aug 2006 04:41:44 -0000      1.2
+++ ecore_desktop_xmlame.c      4 Sep 2006 10:57:42 -0000       1.3
@@ -1,10 +1,10 @@
+#include "Ecore_Desktop.h"
+#include "ecore_desktop_private.h"
+
 #include <fcntl.h>
 #include <ctype.h>
-#include <sys/types.h>
 #include <sys/stat.h>
 
-#include "Ecore_Desktop.h"
-#include "ecore_desktop_private.h"
 
 /** xmlame.c Extensively Mocked Language Approximately Mangled for 
Enlightenment. 
  *



-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to