Enlightenment CVS committal

Author  : cedric
Project : e17
Module  : libs/evas

Dir     : e17/libs/evas/src/lib/cache


Modified Files:
        evas_cache_image.c 


Log Message:
Fix a bug when a file change when it's still in use. Thanks to Adriano Rezende 
for helping tracking the bug.


===================================================================
RCS file: /cvs/e/e17/libs/evas/src/lib/cache/evas_cache_image.c,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -3 -r1.16 -r1.17
--- evas_cache_image.c  6 May 2008 11:20:29 -0000       1.16
+++ evas_cache_image.c  9 May 2008 16:18:18 -0000       1.17
@@ -53,13 +53,20 @@
                                Image_Entry *im,
                                const char *key)
 {
-   im->flags.activ = 0;
-   im->flags.dirty = 0;
-   im->flags.cached = 1;
-   cache->inactiv = evas_hash_direct_add(cache->inactiv, key, im);
-   cache->lru = evas_object_list_prepend(cache->lru, im);
-   cache->usage += cache->func.mem_size_get(im);
-}
+   if (im->cache_key)
+     {
+       im->flags.activ = 0;
+       im->flags.dirty = 0;
+       im->flags.cached = 1;
+       cache->inactiv = evas_hash_direct_add(cache->inactiv, key, im);
+       cache->lru = evas_object_list_prepend(cache->lru, im);
+       cache->usage += cache->func.mem_size_get(im);
+     }
+   else
+     {
+       _evas_cache_image_entry_delete(cache, im);
+     }
+ }
 
 static void
 _evas_cache_image_remove_lru_nodata(Evas_Cache_Image *cache,
@@ -381,6 +388,9 @@
              if (st.st_mtime != im->timestamp) ok = 0;
           }
         if (ok) goto on_ok;
+
+        _evas_cache_image_remove_activ(cache, im);
+       _evas_cache_image_make_dirty(cache, im);
      }
 
    im = evas_hash_find(cache->inactiv, hkey);
@@ -452,16 +462,16 @@
    im->references--;
    cache = im->cache;
 
-   if (im->flags.dirty)
-     {
-        _evas_cache_image_entry_delete(cache, im);
-        return ;
-     }
-
    if (im->references == 0)
      {
+       if (im->flags.dirty)
+         {
+            _evas_cache_image_entry_delete(cache, im);
+            return ;
+         }
+
         _evas_cache_image_remove_activ(cache, im);
-        _evas_cache_image_make_inactiv(cache, im, im->cache_key);
+       _evas_cache_image_make_inactiv(cache, im, im->cache_key);
        evas_cache_image_flush(cache);
      }
 }



-------------------------------------------------------------------------
This SF.net email is sponsored by the 2008 JavaOne(SM) Conference 
Don't miss this year's exciting event. There's still time to save $100. 
Use priority code J8TL2D2. 
http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to