cedric pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=9ed6bea380719603eb6948b1b794706d688a0dfc

commit 9ed6bea380719603eb6948b1b794706d688a0dfc
Author: Larry Jr <larry....@gmail.com>
Date:   Sun Apr 5 15:19:49 2015 +0200

    emodel: API changes and removed unnecessary eina_values copy and 
stringshares
---
 src/lib/eio/eio_model.c             | 172 +++++++++++-------------------------
 src/lib/eio/eio_model_private.h     |  13 +--
 src/lib/emodel/Emodel_Common.h      |  18 +---
 src/lib/emodel/emodel.eo            |   2 +-
 src/tests/emodel/emodel_test_file.c |  53 +++++------
 5 files changed, 76 insertions(+), 182 deletions(-)

diff --git a/src/lib/eio/eio_model.c b/src/lib/eio/eio_model.c
index 7b6bf1d..f642937 100644
--- a/src/lib/eio/eio_model.c
+++ b/src/lib/eio/eio_model.c
@@ -22,13 +22,16 @@ static void _eio_model_emodel_properties_load(Eo *, 
Eio_Model_Data *);
 static void _eio_model_emodel_children_load(Eo *, Eio_Model_Data *);
 
 static void
-_load_set(Eio_Model_Data *priv, Emodel_Load load)
+_load_set(Eio_Model_Data *priv, Emodel_Load_Status status)
 {
+   Emodel_Load load;
+
+   load.status = status;
    if ((priv->load.status & (EMODEL_LOAD_STATUS_LOADED | 
EMODEL_LOAD_STATUS_LOADING)) &&
                         (load.status & (EMODEL_LOAD_STATUS_LOADED | 
EMODEL_LOAD_STATUS_LOADING)))
      {
-        load.status = priv->load.status | load.status;
-        switch (load.status)
+        load.status = priv->load.status | status;
+        switch (status)
           {
            case EMODEL_LOAD_STATUS_LOADED_PROPERTIES:
              load.status &= ~EMODEL_LOAD_STATUS_LOADING_PROPERTIES;
@@ -53,33 +56,6 @@ _load_set(Eio_Model_Data *priv, Emodel_Load load)
      }
 }
 
-static void
-_stat_pro_set(Eio_Model_Data *priv, int prop_id, const Eina_Value *value, 
Emodel_Property_Event *evt)
-{
-   Eina_Value old_value;
-   int changed;
-   Emodel_Property_Pair *pair = NULL;
-   const char *prop = EIO_MODEL_PROPERTIES_DESC->members[prop_id].name;
-
-   eina_value_struct_value_get(priv->properties, prop, &old_value);
-   changed = eina_value_compare(&old_value, value);
-
-   if(changed) eina_value_struct_value_set(priv->properties, prop, value);
-   eina_value_flush(&old_value);
-   if(!changed) return;
-
-   pair = calloc(1, sizeof(Emodel_Property_Pair));
-   EINA_SAFETY_ON_NULL_RETURN(pair);
-   if(!eina_value_copy((Eina_Value*)value, &pair->value))
-     {
-        free(pair);
-        return;
-     }
-
-   pair->property = eina_stringshare_add(prop);
-   evt->changed_properties = eina_list_append(evt->changed_properties, pair);
-}
-
 /**
  *  Callbacks
  *  Property
@@ -88,52 +64,34 @@ static void
 _eio_stat_done_cb(void *data, Eio_File *handler EINA_UNUSED, const Eina_Stat 
*stat)
 {
    Emodel_Property_Event evt;
-   Eina_Value value;
    Eio_Model_Data *priv = data;
-   Emodel_Load load;
+   Eina_Bool changed = EINA_FALSE;
+   Eina_Value_Struct_Desc *desc = EIO_MODEL_PROPERTIES_DESC;
+
    EINA_SAFETY_ON_FALSE_RETURN(eo_ref_get(priv->obj));
 
    priv->stat = stat;
    memset(&evt, 0, sizeof(Emodel_Property_Event));
 
-   // Setup for Eina_Bool
-   eina_value_setup(&value, EINA_VALUE_TYPE_INT);
-   eina_value_set(&value, eio_file_is_dir(stat));
-   _stat_pro_set(priv, EIO_MODEL_PROP_IS_DIR, (const Eina_Value*)&value, &evt);
-   eina_value_flush(&value);
-
-   // Setup for Eina_Bool
-   eina_value_setup(&value, EINA_VALUE_TYPE_INT);
-   eina_value_set(&value, eio_file_is_lnk(stat));
-   _stat_pro_set(priv, EIO_MODEL_PROP_IS_LNK, (const Eina_Value*)&value, &evt);
-   eina_value_flush(&value);
-
-   // Setup for double
-   eina_value_setup(&value, EINA_VALUE_TYPE_TIMEVAL);
-   eina_value_set(&value, eio_file_mtime(stat));
-   _stat_pro_set(priv, EIO_MODEL_PROP_MTIME, (const Eina_Value*)&value, &evt);
-   eina_value_flush(&value);
-
-   // Setup for long long
-   eina_value_setup(&value, EINA_VALUE_TYPE_INT64);
-   eina_value_set(&value, eio_file_size(stat));
-   _stat_pro_set(priv, EIO_MODEL_PROP_SIZE, (const Eina_Value*)&value, &evt);
-   eina_value_flush(&value);
-
-   if (evt.changed_properties != NULL)
+   changed |= eina_value_struct_set(priv->properties,
+                   desc->members[EIO_MODEL_PROP_IS_DIR].name, 
eio_file_is_dir(stat));
+
+   changed |= eina_value_struct_set(priv->properties,
+                   desc->members[EIO_MODEL_PROP_IS_LNK].name, 
eio_file_is_lnk(stat));
+
+   changed |= eina_value_struct_set(priv->properties,
+                   desc->members[EIO_MODEL_PROP_MTIME].name, 
eio_file_mtime(stat));
+
+   changed |= eina_value_struct_set(priv->properties,
+                   desc->members[EIO_MODEL_PROP_SIZE].name, 
eio_file_size(stat));
+
+   if (changed == EINA_TRUE)
      {
-        Emodel_Property_Pair *pair;
+        evt.changed_properties = priv->properties;
         eo_do(priv->obj, 
eo_event_callback_call(EMODEL_EVENT_PROPERTIES_CHANGED, &evt));
-        EINA_LIST_FREE(evt.changed_properties, pair)
-          {
-             eina_stringshare_del(pair->property);
-             eina_value_flush(&pair->value);
-             free(pair);
-          }
      }
 
-   load.status = EMODEL_LOAD_STATUS_LOADED_PROPERTIES;
-   _load_set(priv, load);
+   _load_set(priv, EMODEL_LOAD_STATUS_LOADED_PROPERTIES);
 
    if (priv->load_pending & EMODEL_LOAD_STATUS_LOADED_CHILDREN)
      _eio_model_emodel_children_load(priv->obj, priv);
@@ -149,7 +107,6 @@ static void
 _eio_move_done_cb(void *data, Eio_File *handler EINA_UNUSED)
 {
    Emodel_Property_Event evt;
-   Emodel_Property_Pair pair_path, pair_filename;
    Eio_Model_Data *priv = data;
    Eina_Value_Struct_Desc *desc = EIO_MODEL_PROPERTIES_DESC;
 
@@ -161,24 +118,11 @@ _eio_move_done_cb(void *data, Eio_File *handler 
EINA_UNUSED)
     * When mv is executed we update our values and
     * notify both path and filename properties listeners.
     */
-   pair_path.property = 
eina_stringshare_add(desc->members[EIO_MODEL_PROP_PATH].name);
-   eina_value_struct_set(priv->properties, pair_path.property, priv->path);
-   eina_value_struct_value_get(priv->properties, pair_path.property, 
&pair_path.value);
-   evt.changed_properties = eina_list_append(evt.changed_properties, 
&pair_path);
-
-   pair_filename.property = 
eina_stringshare_add(desc->members[EIO_MODEL_PROP_FILENAME].name);
-   eina_value_struct_set(priv->properties, pair_filename.property, 
basename(priv->path));
-   eina_value_struct_value_get(priv->properties, pair_filename.property, 
&pair_filename.value);
-   evt.changed_properties = eina_list_append(evt.changed_properties, 
&pair_filename);
+   eina_value_struct_set(priv->properties, 
desc->members[EIO_MODEL_PROP_PATH].name, priv->path);
+   eina_value_struct_set(priv->properties, 
desc->members[EIO_MODEL_PROP_FILENAME].name, basename(priv->path));
+   evt.changed_properties = priv->properties;
 
    eo_do(priv->obj, eo_event_callback_call(EMODEL_EVENT_PROPERTIES_CHANGED, 
&evt));
-
-   eina_stringshare_del(pair_path.property);
-   eina_stringshare_del(pair_filename.property);
-   eina_value_flush(&pair_filename.value);
-   eina_value_flush(&pair_path.value);
-
-   eina_list_free(evt.changed_properties);
 }
 
 static void
@@ -247,8 +191,6 @@ _emodel_evt_deleted_ecore_cb(void *data EINA_UNUSED, int 
type EINA_UNUSED, void
        if(cur)
          {
            Emodel_Children_Event cevt;
-
-
            cevt.index = i;
            cevt.child = cur->data;
 
@@ -314,7 +256,7 @@ _eio_error_unlink_cb(void *data EINA_UNUSED, Eio_File 
*handler EINA_UNUSED, int
  */
 static Emodel_Load_Status
 _eio_model_emodel_properties_list_get(Eo *obj EINA_UNUSED,
-                                       Eio_Model_Data *_pd, Eina_List * const* 
properties_list)
+                                       Eio_Model_Data *_pd, Eina_Array * 
const* properties_list)
 {
    Eio_Model_Data *priv = _pd;
    unsigned int i;
@@ -322,14 +264,15 @@ _eio_model_emodel_properties_list_get(Eo *obj EINA_UNUSED,
    EINA_SAFETY_ON_NULL_RETURN_VAL(priv, EINA_FALSE);
    EINA_SAFETY_ON_NULL_RETURN_VAL(priv->obj, EINA_FALSE);
 
-   if(priv->properties_list == NULL)
+   if(priv->properties_array == NULL)
      {
         Eina_Value_Struct_Desc *desc = EIO_MODEL_PROPERTIES_DESC;
+        priv->properties_array = eina_array_new(desc->member_count);
         for(i = 0; i < desc->member_count; ++i)
-          priv->properties_list = eina_list_append(priv->properties_list, 
desc->members[i].name);
+          eina_array_push(priv->properties_array, desc->members[i].name);
      }
 
-   *(Eina_List **)properties_list = priv->properties_list;
+   *(Eina_Array **)properties_list = priv->properties_array;
 
    return priv->load.status;
 }
@@ -340,15 +283,11 @@ _eio_model_emodel_properties_list_get(Eo *obj EINA_UNUSED,
 static Emodel_Load_Status
 _eio_model_emodel_property_get(Eo *obj EINA_UNUSED, Eio_Model_Data *priv, 
const char *property, Eina_Value *value)
 {
-   Eina_Value _v;
    EINA_SAFETY_ON_NULL_RETURN_VAL(property, EMODEL_LOAD_STATUS_ERROR);
    EINA_SAFETY_ON_NULL_RETURN_VAL(priv, EMODEL_LOAD_STATUS_ERROR);
-   EINA_SAFETY_ON_NULL_RETURN_VAL(priv->obj, EMODEL_LOAD_STATUS_ERROR);
 
-   if (eina_value_struct_value_get(priv->properties, property, &_v) == 
EINA_TRUE)
-     {
-        eina_value_copy(&_v, value);
-     }
+   //XXX Return error code?
+   eina_value_struct_value_get(priv->properties, property, value);
 
    return priv->load.status;
 }
@@ -375,7 +314,7 @@ _eio_model_emodel_property_set(Eo *obj EINA_UNUSED, 
Eio_Model_Data *priv, const
          fprintf(stdout, " path %s filename %s\n", priv->path, 
basename(priv->path));
 
          eina_value_struct_set(priv->properties, "path", priv->path);
-         eina_value_struct_set(priv->properties, "filename", 
eina_stringshare_add(basename(priv->path)));
+         eina_value_struct_set(priv->properties, "filename", 
basename(priv->path));
 
          _eio_monitors_list_load(priv);
 
@@ -413,7 +352,6 @@ _eio_model_emodel_children_count_get(Eo *obj EINA_UNUSED, 
Eio_Model_Data *priv,
  static void
 _eio_model_emodel_properties_load(Eo *obj EINA_UNUSED, Eio_Model_Data *priv)
 {
-   Emodel_Load load;
    if (priv->path == NULL)
      {
          priv->load_pending |= EMODEL_LOAD_STATUS_LOADED_PROPERTIES;
@@ -423,8 +361,7 @@ _eio_model_emodel_properties_load(Eo *obj EINA_UNUSED, 
Eio_Model_Data *priv)
 
    if (!(priv->load.status & (EMODEL_LOAD_STATUS_LOADED_PROPERTIES | 
EMODEL_LOAD_STATUS_LOADING_PROPERTIES)))
      {
-        load.status = EMODEL_LOAD_STATUS_LOADING_PROPERTIES;
-         _load_set(priv, load);
+         _load_set(priv, EMODEL_LOAD_STATUS_LOADING_PROPERTIES);
          priv->file = eio_file_direct_stat(priv->path, _eio_stat_done_cb, 
_eio_error_cb, priv);
      }
 }
@@ -470,11 +407,10 @@ _eio_main_children_load_cb(void *data, Eio_File *handler 
EINA_UNUSED, const Eina
    Eio_Model_Data *priv = data;
    EINA_SAFETY_ON_NULL_RETURN(priv);
 
-   child = eo_add_ref(MY_CLASS, NULL, eio_model_path_set(info->path));
+   child = eo_add(MY_CLASS, NULL, eio_model_path_set(info->path));
    if (priv->filter_cb)
-     {
-        eo_do(child, eio_model_children_filter_set(priv->filter_cb, 
priv->filter_userdata));
-     }
+     eo_do(child, eio_model_children_filter_set(priv->filter_cb, 
priv->filter_userdata));
+
    priv->children_list = eina_list_append(priv->children_list, child);
 }
 
@@ -483,13 +419,11 @@ _eio_done_children_load_cb(void *data, Eio_File *handler 
EINA_UNUSED)
 {
    unsigned long count;
    Eio_Model_Data *priv = data;
-   Emodel_Load load;
    EINA_SAFETY_ON_NULL_RETURN(priv);
 
    count = eina_list_count(priv->children_list);
-   load.status = EMODEL_LOAD_STATUS_LOADED_CHILDREN;
+   _load_set(priv, EMODEL_LOAD_STATUS_LOADED_CHILDREN);
 
-   _load_set(priv, load);
    eo_do(priv->obj, 
eo_event_callback_call(EMODEL_EVENT_CHILDREN_COUNT_CHANGED, &count));
 }
 
@@ -498,14 +432,11 @@ _eio_error_children_load_cb(void *data, Eio_File *handler 
EINA_UNUSED, int error
 {
    Eio_Model_Data *priv = data;
    Eo *child;
-   Emodel_Load load;
    fprintf(stderr, "%s: err=%d\n", __FUNCTION__, error);
    EINA_LIST_FREE(priv->children_list, child)
        eo_unref(child);
 
-   load.status = EMODEL_LOAD_STATUS_LOADED_CHILDREN;
-
-   _load_set(priv, load);
+   _load_set(priv, EMODEL_LOAD_STATUS_LOADED_CHILDREN);
 }
 
 /**
@@ -514,7 +445,6 @@ _eio_error_children_load_cb(void *data, Eio_File *handler 
EINA_UNUSED, int error
 static void
 _eio_model_emodel_children_load(Eo *obj EINA_UNUSED, Eio_Model_Data *priv)
 {
-   Emodel_Load load;
    if (priv->path == NULL)
      {
          priv->load_pending |= EMODEL_LOAD_STATUS_LOADED_CHILDREN;
@@ -522,12 +452,12 @@ _eio_model_emodel_children_load(Eo *obj EINA_UNUSED, 
Eio_Model_Data *priv)
      }
    priv->load_pending &= ~EMODEL_LOAD_STATUS_LOADED_CHILDREN;
 
-   if (!(priv->load.status & (EMODEL_LOAD_STATUS_LOADED_CHILDREN | 
EMODEL_LOAD_STATUS_LOADING_CHILDREN)))
+   if (priv->children_list == NULL &&
+                   !(priv->load.status & (EMODEL_LOAD_STATUS_LOADED_CHILDREN | 
EMODEL_LOAD_STATUS_LOADING_CHILDREN)))
      {
         _eio_model_emodel_monitor_add(priv);
 
-        load.status = EMODEL_LOAD_STATUS_LOADING_CHILDREN;
-         _load_set(priv, load);
+         _load_set(priv, EMODEL_LOAD_STATUS_LOADING_CHILDREN);
          eio_file_direct_ls(priv->path, _eio_filter_children_load_cb,
                       _eio_main_children_load_cb, _eio_done_children_load_cb,
                       _eio_error_children_load_cb, priv);
@@ -559,7 +489,6 @@ _eio_model_emodel_load_status_get(Eo *obj EINA_UNUSED, 
Eio_Model_Data *priv)
 static void
 _eio_model_emodel_unload(Eo *obj  EINA_UNUSED, Eio_Model_Data *priv)
 {
-   Emodel_Load load;
    if (!(priv->load.status & EMODEL_LOAD_STATUS_UNLOADED))
      {
          Eo *child;
@@ -568,8 +497,7 @@ _eio_model_emodel_unload(Eo *obj  EINA_UNUSED, 
Eio_Model_Data *priv)
               eo_unref(child);
            }
 
-         load.status = EMODEL_LOAD_STATUS_UNLOADED;
-         _load_set(priv, load);
+         _load_set(priv, EMODEL_LOAD_STATUS_UNLOADED);
      }
 }
 
@@ -709,7 +637,6 @@ _struct_properties_init(void)
      EINA_VALUE_STRUCT_MEMBER(NULL, This_Eio_Properties, is_lnk),
      EINA_VALUE_STRUCT_MEMBER(NULL, This_Eio_Properties, size)
    };
-   //XXX: Check data types
    prop_members[EIO_MODEL_PROP_FILENAME].type = EINA_VALUE_TYPE_STRING;
    prop_members[EIO_MODEL_PROP_PATH].type = EINA_VALUE_TYPE_STRING;
    prop_members[EIO_MODEL_PROP_MTIME].type = EINA_VALUE_TYPE_TIMEVAL;
@@ -746,7 +673,6 @@ _eio_model_eo_base_constructor(Eo *obj, Eio_Model_Data 
*priv)
 static void
 _eio_model_path_set(Eo *obj EINA_UNUSED, Eio_Model_Data *priv, const char 
*path)
 {
-  //_eio_model_eo_base_constructor(obj, priv);
    priv->path = strdup(path);
 
    eina_value_struct_set(priv->properties, "path", priv->path);
@@ -760,11 +686,15 @@ static void
 _eio_model_eo_base_destructor(Eo *obj , Eio_Model_Data *priv)
 {
    Eo *child;
+
    if(priv->monitor)
      eio_monitor_del(priv->monitor);
 
-   eina_list_free(priv->properties_list);
-   eina_value_free(priv->properties);
+   if (priv->properties_array)
+     eina_array_free(priv->properties_array);
+
+   if (priv->properties)
+     eina_value_free(priv->properties);
 
    EINA_LIST_FREE(priv->children_list, child)
      eo_unref(child);
diff --git a/src/lib/eio/eio_model_private.h b/src/lib/eio/eio_model_private.h
index 26ebdfc..a07fba5 100644
--- a/src/lib/eio/eio_model_private.h
+++ b/src/lib/eio/eio_model_private.h
@@ -4,7 +4,6 @@
 #define PROP_LIST_SIZE 7
 
 typedef struct _Eio_Model_Data                 Eio_Model_Data;
-//typedef struct _Eio_Model_Child_Add            Eio_Model_Child_Add;
 typedef struct _Eio_Model_Monitor_Data         Eio_Model_Monitor_Data;
 
 struct _Eio_Model_Monitor_Data
@@ -33,7 +32,7 @@ struct _Eio_Model_Data
 {
    Eo *obj;
    char *path;
-   Eina_List *properties_list;
+   Eina_Array *properties_array;
    Eina_Value *properties;
    Emodel_Load load;
    int load_pending;
@@ -49,14 +48,4 @@ struct _Eio_Model_Data
    void *filter_userdata;
 };
 
-/*
-struct _Eio_Model_Child_Add
-{
-   Eo *child;
-   Eio_Model_Data *priv;
-   char* fullpath;
-   char *name;
-};
-*/
-
 #endif
diff --git a/src/lib/emodel/Emodel_Common.h b/src/lib/emodel/Emodel_Common.h
index d457c48..608de82 100644
--- a/src/lib/emodel/Emodel_Common.h
+++ b/src/lib/emodel/Emodel_Common.h
@@ -46,26 +46,12 @@ struct _Emodel_Load
 typedef struct _Emodel_Load Emodel_Load;
 
 /**
- * @struct _Emodel_Property_Pair
- */
-struct _Emodel_Property_Pair
-{
-   Eina_Value value; /**< the property value */
-   Eina_Stringshare *property; /**< the property name */
-};
-
-/**
- * @typedef Emodel_Property_Pair
- */
-typedef struct _Emodel_Property_Pair Emodel_Property_Pair;
-
-/**
  * @struct _Emodel_Property_Event
  */
 struct _Emodel_Property_Event
 {
-   Eina_List *changed_properties; /**< the property value */
-   Eina_List *invalidated_properties; /**< the property name */
+   const Eina_Value *changed_properties; /**< Eina_Value_Struct or 
Eina_Value_Hash with changed properties values */
+   Eina_Array *invalidated_properties; /**< array of name */
 };
 
 /**
diff --git a/src/lib/emodel/emodel.eo b/src/lib/emodel/emodel.eo
index 39fccf2..ca17652 100644
--- a/src/lib/emodel/emodel.eo
+++ b/src/lib/emodel/emodel.eo
@@ -66,7 +66,7 @@ interface Emodel ()
                 return: Emodel_Load_Status;
          }
          values {
-               const(list<const(char*)>*) properties_list; /*@ list of current 
properties */
+               const(array<const(char*)>*) properties_list; /*@ list of 
current properties */
             }
         }
          property {
diff --git a/src/tests/emodel/emodel_test_file.c 
b/src/tests/emodel/emodel_test_file.c
index 029aa2e..d672a9d 100644
--- a/src/tests/emodel/emodel_test_file.c
+++ b/src/tests/emodel/emodel_test_file.c
@@ -30,12 +30,10 @@ struct reqs_t {
    int changed_is_lnk;
    int changed_size;
    int changed_mtime;
-   int changed_icon;
 
    /* properties list */
    int proplist_filename;
    int proplist_path;
-   int proplist_icon;
    int proplist_mtime;
    int proplist_is_dir;
    int proplist_is_lnk;
@@ -140,31 +138,24 @@ _load_status_cb(void *data EINA_UNUSED, Eo *obj, const 
Eo_Event_Description *des
 }
 
 static Eina_Bool
-_properties_cb(void *data EINA_UNUSED, Eo *obj EINA_UNUSED, const 
Eo_Event_Description *desc EINA_UNUSED, void *event_info)
+_properties_change_cb(void *data EINA_UNUSED, Eo *obj EINA_UNUSED, const 
Eo_Event_Description *desc EINA_UNUSED, void *event_info)
 {
    const Emodel_Property_Event *evt = (Emodel_Property_Event *)event_info;
-   Emodel_Property_Pair *pair = NULL;
-   Eina_List *l = NULL;
+   Eina_Value v;
 
-   EINA_LIST_FOREACH(evt->changed_properties, l, pair)
-     {
-        char *str;
-        str = eina_value_to_string(&pair->value);
-        fprintf(stdout, "Received changed property=%s, value=%s\n",
-                pair->property, str);
-        free(str);
-        if(!strcmp(pair->property, "is_dir"))
-          reqs.changed_is_dir = 1;
-        if(!strcmp(pair->property, "is_lnk"))
-          reqs.changed_is_lnk = 1;
-        if(!strcmp(pair->property, "size"))
-          reqs.changed_size = 1;
-        if(!strcmp(pair->property, "mtime"))
-          reqs.changed_mtime = 1;
-        if(!strcmp(pair->property, "icon"))
-          reqs.changed_icon = 1;
-     }
+   if (eina_value_type_get(evt->changed_properties) != EINA_VALUE_TYPE_STRUCT)
+     return EINA_FALSE;
+
+   if(eina_value_struct_value_get(evt->changed_properties, "is_dir", &v) == 
EINA_TRUE)
+     reqs.changed_is_dir = 1;
+   if(eina_value_struct_value_get(evt->changed_properties, "is_lnk", &v) == 
EINA_TRUE)
+     reqs.changed_is_lnk = 1;
+   if(eina_value_struct_value_get(evt->changed_properties, "size", &v) == 
EINA_TRUE)
+     reqs.changed_size = 1;
+   if(eina_value_struct_value_get(evt->changed_properties, "mtime", &v) == 
EINA_TRUE)
+     reqs.changed_mtime = 1;
 
+   eina_value_flush(&v);
    reqs.properties = 1;
    return EINA_TRUE;
 }
@@ -192,10 +183,10 @@ START_TEST(emodel_test_test_file)
 #ifdef _RUN_LOCAL_TEST
    Eina_Value nameset_value;
 #endif
-   Eina_List *properties_list;
-   Eina_List *l;
+   Eina_Array *properties_list;
+   Eina_Array_Iterator iterator;
    char *str;
-   int i;
+   unsigned int i;
 
    memset(&reqs, -1, sizeof(struct reqs_t));
 
@@ -207,7 +198,7 @@ START_TEST(emodel_test_test_file)
    fail_if(!filemodel, "ERROR: Cannot init model!\n");
 
    eo_do(filemodel, eo_event_callback_add(EMODEL_EVENT_LOAD_STATUS, 
_load_status_cb, NULL));
-   eo_do(filemodel, eo_event_callback_add(EMODEL_EVENT_PROPERTIES_CHANGED, 
_properties_cb, NULL));
+   eo_do(filemodel, eo_event_callback_add(EMODEL_EVENT_PROPERTIES_CHANGED, 
_properties_change_cb, NULL));
    eo_do(filemodel, eo_event_callback_add(EMODEL_EVENT_CHILDREN_COUNT_CHANGED, 
_children_count_cb, NULL));
 
    eo_do(filemodel, emodel_load());
@@ -225,15 +216,13 @@ START_TEST(emodel_test_test_file)
 
    i = 0;
    eo_do(filemodel, emodel_properties_list_get(&properties_list));
-   EINA_LIST_FOREACH((Eina_List *)properties_list, l, str)
+   EINA_ARRAY_ITER_NEXT(properties_list, i, str, iterator)
      {
-        fprintf(stdout, "Returned property list %d: %s\n", i++, str);
+        fprintf(stdout, "Returned property list %d: %s\n", i, str);
         if(!strcmp(str, "filename"))
           reqs.proplist_filename = 1;
         else if(!strcmp(str, "path"))
           reqs.proplist_path = 1;
-        else if(!strcmp(str, "icon"))
-          reqs.proplist_icon = 1;
         else if(!strcmp(str, "mtime"))
           reqs.proplist_mtime = 1;
         else if(!strcmp(str, "is_dir"))
@@ -268,6 +257,6 @@ END_TEST
 void
 emodel_test_file(TCase *tc)
 {
-   /* tcase_add_test(tc, emodel_test_test_file); */
+    tcase_add_test(tc, emodel_test_test_file);
 }
 

-- 


Reply via email to