raster pushed a commit to branch master.

http://git.enlightenment.org/core/enlightenment.git/commit/?id=45b6536a2055a4f339e18eef46132feb0efb6869

commit 45b6536a2055a4f339e18eef46132feb0efb6869
Author: Carsten Haitzler (Rasterman) <[email protected]>
Date:   Tue Jan 10 10:32:51 2017 +0900

    e_icon - remove icon cache code - its disabled anyway with ifdefs
    
    this isnt used so it just adds complexity/code to work on. remove it.
    it would need a rewrite anyway as using a single file is hugely
    inefficient as eet has to doa full rewrite of the file every
    modification... it also duplicated icons in memory and dint load
    directly from file etc. so... remove anyway.
---
 src/bin/e_icon.c | 366 -------------------------------------------------------
 1 file changed, 366 deletions(-)

diff --git a/src/bin/e_icon.c b/src/bin/e_icon.c
index b12a3db..9474fd2 100644
--- a/src/bin/e_icon.c
+++ b/src/bin/e_icon.c
@@ -1,7 +1,5 @@
 #include "e.h"
 
-//#define USE_ICON_CACHE
-
 typedef struct _E_Smart_Data E_Smart_Data;
 typedef struct _Cache_Item   Cache_Item;
 typedef struct _Cache        Cache;
@@ -14,10 +12,6 @@ struct _E_Smart_Data
    const char   *fdo;
    Ecore_Timer  *guessing_animation;
    Ecore_Timer  *timer, *fdo_reload_timer;
-#ifdef USE_ICON_CACHE
-   const char   *file;
-   Cache_Item   *ci;
-#endif
    double        last_resize;
    int           size;
    int           frame, frame_count;
@@ -64,90 +58,18 @@ static void      _e_icon_smart_clip_unset(Evas_Object *obj);
 static void      _e_icon_obj_prepare(Evas_Object *obj, E_Smart_Data *sd);
 static void      _e_icon_preloaded(void *data, Evas *e, Evas_Object *obj, void 
*event_info);
 
-#ifdef USE_ICON_CACHE
-static Eina_Bool _e_icon_cache_find(Evas_Object *o, const char *file);
-static void      _e_icon_cache_icon_loaded(Cache_Item *ci);
-static void      _e_icon_cache_icon_try_next(Cache_Item *ci);
-static void      _e_icon_cache_item_free(void *data);
-static void      _e_icon_obj_del(void *data, Evas *e, Evas_Object *obj, void 
*event_info);
-#endif
-
 /* local subsystem globals */
 static Evas_Smart *_e_smart = NULL;
 
-#ifdef USE_ICON_CACHE
-static Cache *_cache = NULL;
-static E_Config_DD *cache_edd = NULL;
-static E_Config_DD *cache_item_edd = NULL;
-#define DBG(...)
-#endif
-
 EINTERN int
 e_icon_init(void)
 {
-#ifdef USE_ICON_CACHE
-
-   Eet_File *ef;
-   char buf[PATH_MAX];
-
-#undef T
-#undef D
-#define T Cache_Item
-#define D cache_item_edd
-   D = E_CONFIG_DD_NEW("Cache_Item", T);
-   E_CONFIG_VAL(D, T, timestamp, UINT);
-#undef T
-#undef D
-#define T Cache
-#define D cache_edd
-   D = E_CONFIG_DD_NEW("Cache", T);
-   E_CONFIG_HASH(D, T, hash, cache_item_edd);
-#undef T
-#undef D
-
-   e_user_dir_concat_static(buf, "icon_cache.eet");
-
-   ef = eet_open(buf, EET_FILE_MODE_READ_WRITE);
-   if (!ef) return 1;  /* not critical */
-
-   _cache = eet_data_read(ef, cache_edd, "idx");
-   if (!_cache)
-     _cache = E_NEW(Cache, 1);
-
-   if (!_cache->hash)
-     _cache->hash = eina_hash_string_superfast_new(_e_icon_cache_item_free);
-
-   eet_close(ef);
-
-   _cache->file = strdup(buf);
-
-   _cache->ef = NULL;
-#endif
    return 1;
 }
 
 EINTERN int
 e_icon_shutdown(void)
 {
-#ifdef USE_ICON_CACHE
-   if (_cache)
-     {
-        E_FREE(_cache->file);
-
-        if (_cache->ef)
-          eet_close(_cache->ef);
-
-        if (_cache->load_queue)
-          eina_list_free(_cache->load_queue);
-
-        eina_hash_free(_cache->hash);
-        E_FREE(_cache);
-     }
-
-   E_CONFIG_DD_FREE(cache_item_edd);
-   E_CONFIG_DD_FREE(cache_edd);
-#endif
-
    return 1;
 }
 
@@ -170,10 +92,6 @@ _e_icon_obj_prepare(Evas_Object *obj, E_Smart_Data *sd)
 
         pclip = evas_object_clip_get(sd->obj);
         evas_object_del(sd->obj);
-#ifdef USE_ICON_CACHE
-        sd->ci = NULL;
-        eina_stringshare_replace(&sd->file, NULL);
-#endif
         sd->obj = evas_object_image_add(evas_object_evas_get(obj));
         if (!sd->animated)
           evas_object_image_scale_hint_set(sd->obj,
@@ -258,14 +176,6 @@ e_icon_file_set(Evas_Object *obj, const char *file)
      evas_object_image_load_size_set(sd->obj, sd->size, sd->size);
    if (sd->preload) evas_object_hide(sd->obj);
 
-#ifdef USE_ICON_CACHE
-   if (_e_icon_cache_find(obj, file))
-     {
-        _e_icon_smart_reconfigure(sd);
-        return;
-     }
-#endif
-
    if (sd->preload)
      evas_object_image_load_head_skip_set(sd->obj, EINA_TRUE);
    evas_object_image_file_set(sd->obj, file, NULL);
@@ -282,23 +192,8 @@ e_icon_file_set(Evas_Object *obj, const char *file)
         else if (evas_object_visible_get(obj))
           {
              evas_object_show(sd->obj);
-#ifdef USE_ICON_CACHE
-             _e_icon_cache_icon_loaded(sd->ci);
-#endif
           }
      }
-#ifdef USE_ICON_CACHE
-   else
-     {
-        evas_object_event_callback_del_full(sd->obj, EVAS_CALLBACK_DEL,
-                                            _e_icon_obj_del, obj);
-        _cache->load_queue = eina_list_remove(_cache->load_queue, sd->ci);
-        eina_stringshare_del(sd->ci->id);
-        E_FREE(sd->ci);
-        sd->ci = NULL;
-     }
-#endif
-
    _e_icon_smart_reconfigure(sd);
 }
 
@@ -534,13 +429,6 @@ e_icon_file_get(const Evas_Object *obj, const char **file, 
const char **group)
    if (file) *file = NULL;
    if (group) *group = NULL;
    if (!(sd = evas_object_smart_data_get(obj))) return EINA_FALSE;
-#ifdef USE_ICON_CACHE
-   if (sd->file)
-     {
-        if (file) *file = sd->file;
-        return EINA_TRUE;
-     }
-#endif
    if (sd->edje)
      {
         edje_object_file_get(sd->obj, file, group);
@@ -856,9 +744,6 @@ _e_icon_preloaded(void *data, Evas *e EINA_UNUSED, 
Evas_Object *obj EINA_UNUSED,
      sd->invalid = 1;
    sd->loading = 0;
    _e_icon_smart_reconfigure(sd);
-#ifdef USE_ICON_CACHE
-   _e_icon_cache_icon_loaded(sd->ci);
-#endif
 }
 
 static void
@@ -897,9 +782,6 @@ _e_icon_smart_del(Evas_Object *obj)
    evas_object_del(sd->obj);
    evas_object_del(sd->eventarea);
    if (sd->fdo) eina_stringshare_del(sd->fdo);
-#ifdef USE_ICON_CACHE
-   if (sd->file) eina_stringshare_del(sd->file);
-#endif
    if (sd->fdo_reload_timer) ecore_timer_del(sd->fdo_reload_timer);
    if (sd->timer) ecore_timer_del(sd->timer);
    if (sd->guessing_animation) ecore_timer_del(sd->guessing_animation);
@@ -1010,10 +892,6 @@ _e_icon_smart_show(Evas_Object *obj)
    if (!((sd->preload) && (sd->loading)))
      {
         if (!sd->invalid) evas_object_show(sd->obj);
-#ifdef USE_ICON_CACHE
-        if (!sd->preload)
-          _e_icon_cache_icon_loaded(sd->ci);
-#endif
      }
 
    evas_object_show(sd->eventarea);
@@ -1057,247 +935,3 @@ _e_icon_smart_clip_unset(Evas_Object *obj)
    evas_object_clip_unset(sd->obj);
    evas_object_clip_unset(sd->eventarea);
 }
-
-#ifdef USE_ICON_CACHE
-
-static void
-_e_icon_cache_item_free(void *data)
-{
-   Cache_Item *ci = data;
-   eina_stringshare_del(ci->id);
-   E_FREE(ci);
-}
-
-static Eina_Bool
-_e_icon_cache_save(void *data)
-{
-   if (_cache->load_queue)
-     {
-        Cache_Item *ci;
-        Eina_List *l;
-
-        /* EINA_LIST_FOREACH(_cache->load_queue, l, ci)
-         *   printf("  : %s\n", ci->id); */
-
-        return ECORE_CALLBACK_RENEW;
-     }
-
-   eet_sync(_cache->ef);
-   eet_close(_cache->ef);
-
-   _cache->ef = NULL;
-   _cache->timer = NULL;
-
-   return ECORE_CALLBACK_CANCEL;
-}
-
-static Eina_Bool
-_e_icon_cache_find(Evas_Object *obj, const char *file)
-{
-   E_Smart_Data *sd;
-   Cache_Item *ci;
-   char buf[4096];
-   const char *id;
-   Eina_List *l;
-
-   if (!_cache) return EINA_FALSE;
-
-   if (!(sd = evas_object_smart_data_get(obj)))
-     return EINA_FALSE;
-
-   snprintf(buf, sizeof(buf), "%d:%s", sd->size, file);
-
-   if ((ci = eina_hash_find(_cache->hash, buf)))
-     {
-        unsigned int w, h, alpha;
-        void *data;
-        int found = 0;
-
-        // XXX: make this async - in fact shouldnt we just point evas
-        // XXX: to the cache eet file and key directly and have IT do the
-        // XXX: loading as it can and can thus share?
-        if (!_cache->ef)
-          _cache->ef = eet_open(_cache->file, EET_FILE_MODE_READ_WRITE);
-
-        if (_cache->ef && (data = eet_data_image_read(_cache->ef, buf,
-                                                      &w, &h, &alpha,
-                                                      NULL, NULL, NULL)))
-          {
-             evas_object_image_size_set(sd->obj, w, h);
-             evas_object_image_alpha_set(sd->obj, alpha);
-             evas_object_image_data_copy_set(sd->obj, data);
-             evas_object_smart_callback_call(obj, "preloaded", NULL);
-             if (!sd->invalid) evas_object_show(sd->obj);
-             free(data);
-             found = 1;
-          }
-
-        if ((_cache->ef) && !(_cache->timer))
-          _cache->timer = ecore_timer_add(3.0, _e_icon_cache_save, NULL);
-
-        if (found)
-          return EINA_TRUE;
-
-        eina_hash_del_by_key(_cache->hash, ci->id);
-        ci = NULL;
-     }
-
-   id = eina_stringshare_add(buf);
-
-   /* not found in cache, check load queue */
-   EINA_LIST_FOREACH(_cache->load_queue, l, ci)
-     {
-        if (ci->id != id) continue;
-        ci->objs = eina_list_append(ci->objs, obj);
-        sd->ci = ci;
-        evas_object_event_callback_add(sd->obj, EVAS_CALLBACK_DEL,
-                                       _e_icon_obj_del, obj);
-        eina_stringshare_del(id);
-        return EINA_TRUE;
-     }
-
-   ci = E_NEW(Cache_Item, 1);
-   ci->id = id;
-   ci->icon = sd->obj;
-   ci->obj = obj;
-   sd->ci = ci;
-   sd->file = eina_stringshare_add(file);
-
-   evas_object_event_callback_add(sd->obj, EVAS_CALLBACK_DEL, _e_icon_obj_del, 
obj);
-
-   _cache->load_queue = eina_list_append(_cache->load_queue, ci);
-
-   return EINA_FALSE;
-}
-
-static void
-_e_icon_cache_icon_try_next(Cache_Item *ci)
-{
-   Evas_Object *obj;
-   E_Smart_Data *sd;
-
-   if (!ci->objs)
-     {
-        /* no more e_icon wait for this object to be loaded */
-        _cache->load_queue = eina_list_remove(_cache->load_queue, ci);
-        _e_icon_cache_item_free(ci);
-        return;
-     }
-
-   obj = eina_list_data_get(ci->objs);
-   ci->objs = eina_list_remove_list(ci->objs, ci->objs);
-
-   if (!obj)
-     goto __try_next;
-
-   if (!(sd = evas_object_smart_data_get(obj)))
-     goto __try_next;
-
-   evas_object_image_file_set(sd->obj, sd->file, NULL);
-   if (evas_object_image_load_error_get(sd->obj) != EVAS_LOAD_ERROR_NONE)
-     goto __try_next;
-
-   sd->ci->icon = sd->obj;
-   sd->ci->obj = obj;
-   evas_object_image_preload(sd->obj, EINA_FALSE);
-   return;
-
-__try_next:
-   evas_object_event_callback_del_full(sd->obj, EVAS_CALLBACK_DEL,
-                                       _e_icon_obj_del, obj);
-   _e_icon_cache_icon_try_next(ci);
-}
-
-static void
-_e_icon_obj_del(void *data, Evas *e EINA_UNUSED, Evas_Object *obj, void 
*event_info EINA_UNUSED)
-{
-   E_Smart_Data *sd;
-
-   if (!(sd = evas_object_smart_data_get(data))) return;
-   if (!sd->ci) return;
-
-   /* check if the deleted object is the one that is used for
-      preloading.  when other objs wait for this image data start
-      preloading again with the next. */
-
-   if (sd->ci->icon == obj)
-     {
-        _e_icon_cache_icon_try_next(sd->ci);
-        sd->ci = NULL;
-     }
-   else
-     {
-        sd->ci->objs = eina_list_remove(sd->ci->objs, data);
-        sd->ci = NULL;
-     }
-}
-
-static void
-_e_icon_cache_icon_loaded(Cache_Item *ci)
-{
-   int w, h, alpha;
-   E_Smart_Data *sd;
-   Evas_Object *obj;
-   void *data;
-
-   if (!_cache) return;
-
-   if (!ci || !ci->id) return;
-   _cache->load_queue = eina_list_remove(_cache->load_queue, ci);
-
-   // XXX: making copies of icon data here is not a good idea - fix this
-   // XXX: the whole point of efl is to NOT do this and to share srcs
-   // XXX: so probably refer to the original eet src file if its a
-   // XXX: cached icon
-   data = evas_object_image_data_get(ci->icon, EINA_FALSE);
-   evas_object_image_size_get(ci->icon, &w, &h);
-   alpha = evas_object_image_alpha_get(ci->icon);
-
-   evas_object_event_callback_del_full(ci->icon, EVAS_CALLBACK_DEL,
-                                       _e_icon_obj_del, ci->obj);
-   evas_object_smart_callback_call(ci->obj, "preloaded", NULL);
-
-   DBG("icon loaded %p, %s\n", data, ci->id);
-
-   sd = evas_object_smart_data_get(ci->obj);
-   sd->ci = NULL;
-
-   /* pass loaded data to other e_icon wating for this */
-   EINA_LIST_FREE(ci->objs, obj)
-     {
-        sd = evas_object_smart_data_get(obj);
-        sd->ci = NULL;
-        evas_object_event_callback_del_full(sd->obj, EVAS_CALLBACK_DEL,
-                                            _e_icon_obj_del, obj);
-        if (!data) continue;
-
-        evas_object_image_size_set(sd->obj, w, h);
-        evas_object_image_alpha_set(sd->obj, alpha);
-        evas_object_image_data_copy_set(sd->obj, data);
-        if (!sd->invalid) evas_object_show(sd->obj);
-        evas_object_smart_callback_call(obj, "preloaded", NULL);
-     }
-
-   if (data)
-     {
-        if (!_cache->ef)
-          _cache->ef = eet_open(_cache->file, EET_FILE_MODE_READ_WRITE);
-        if (_cache->ef && eet_data_image_write(_cache->ef, ci->id, data,
-                                               w, h, alpha, 1, 100, 0))
-          {
-             eina_hash_add(_cache->hash, ci->id, ci);
-             eet_data_write(_cache->ef, cache_edd, "idx", _cache, 1);
-
-             if (!_cache->timer)
-               _cache->timer = ecore_timer_add(3.0, _e_icon_cache_save, NULL);
-
-             eina_stringshare_replace(&ci->id, NULL);
-             return;
-          }
-     }
-
-   DBG("couldnt write cache %p !!!\n", _cache->ef);
-   _e_icon_cache_item_free(ci);
-}
-
-#endif

-- 


Reply via email to