On Mon, Feb 29, 2016 at 12:52 PM, Stephen Houston <[email protected]> wrote:
> According to the docs, Ecore_File_Monitors do work on Windows.

Docs is wrong :-)

> As for the question of why I switched from Eio, I already answered it.

Yes, but your bug report doesn't really help. You don't describe how
to see the issue even if it is irregularly. I have not even the
beginning of an idea of what you are complaining about. If I said to
you ephoto is not working, I am switching back to Eye of Gnome because
of it. How would you be able to address the problem ?

Cedric

> On Mon, Feb 29, 2016 at 2:40 PM, Cedric BAIL <[email protected]> wrote:
>
>> On Feb 29, 2016 11:30, "Davide Andreoli" <[email protected]> wrote:
>> >
>> > 2016-02-29 18:16 GMT+01:00 Stephen okra Houston <[email protected]>:
>> >
>> > > okra pushed a commit to branch master.
>> > >
>> > >
>> > >
>>
>> http://git.enlightenment.org/apps/ephoto.git/commit/?id=97e82b216f0191697691d768451cca6824d447e6
>> > >
>> > > commit 97e82b216f0191697691d768451cca6824d447e6
>> > > Author: Stephen okra Houston <[email protected]>
>> > > Date:   Mon Feb 29 11:15:52 2016 -0600
>> > >
>> > >     Ephoto: Move to Ecore_File_Monitor: It behaves better than Eio at
>> this
>> > > point.
>> > >
>> >
>> > oh, really? I have plans to port my usage of Ecore_File_Monitor to Eio in
>> > the near future, because
>> > the ecore one is not able to manage 2 monitors on the same folder at the
>> > same time.
>>
>> It also doesn't work on Windows as far as I know and is pretty much lacking
>> behind.
>>
>> > What problems are you getting using Eio?
>>
>> Would be interested to know too.
>>
>> > > ---
>> > >  src/bin/ephoto.h                |   6 +-
>> > >  src/bin/ephoto_main.c           | 234 ++++++++++------------
>> > >  src/bin/ephoto_single_browser.c |  55 +++--
>> > >  src/bin/ephoto_thumb_browser.c  | 431
>> > > ++++++++++++++--------------------------
>> > >  4 files changed, 280 insertions(+), 446 deletions(-)
>> > >
>> > > diff --git a/src/bin/ephoto.h b/src/bin/ephoto.h
>> > > index c828b60..adc1d61 100644
>> > > --- a/src/bin/ephoto.h
>> > > +++ b/src/bin/ephoto.h
>> > > @@ -171,8 +171,7 @@ struct _Ephoto
>> > >     Eina_List *searchentries;
>> > >     Eina_List *thumbs;
>> > >
>> > > -   Eio_Monitor *monitor;
>> > > -   Eina_List *monitor_handlers;
>> > > +   Ecore_File_Monitor *monitor;
>> > >
>> > >     const char *top_directory;
>> > >
>> > > @@ -203,8 +202,7 @@ struct _Ephoto_Entry
>> > >     const char *label;
>> > >     double size;
>> > >     Ephoto *ephoto;
>> > > -   Eio_Monitor *monitor;
>> > > -   Eina_List *monitor_handlers;
>> > > +   Ecore_File_Monitor *monitor;
>> > >     Elm_Object_Item *item;
>> > >     Elm_Object_Item *parent;
>> > >     Eina_List *free_listeners;
>> > > diff --git a/src/bin/ephoto_main.c b/src/bin/ephoto_main.c
>> > > index 9b35096..62c3c83 100644
>> > > --- a/src/bin/ephoto_main.c
>> > > +++ b/src/bin/ephoto_main.c
>> > > @@ -166,13 +166,7 @@ _win_free(void *data, Evas *e EINA_UNUSED,
>> > > Evas_Object *obj EINA_UNUSED,
>> > >     if (ephoto->timer.thumb_regen)
>> > >       ecore_timer_del(ephoto->timer.thumb_regen);
>> > >     if (ephoto->monitor)
>> > > -     {
>> > > -        Ecore_Event_Handler *handler;
>> > > -
>> > > -        EINA_LIST_FREE(ephoto->monitor_handlers, handler)
>> > > -          ecore_event_handler_del(handler);
>> > > -        eio_monitor_del(ephoto->monitor);
>> > > -     }
>> > > +     ecore_file_monitor_del(ephoto->monitor);
>> > >     ephoto_config_save(ephoto);
>> > >     free(ephoto);
>> > >  }
>> > > @@ -461,133 +455,133 @@ _ephoto_change_dir(void *data)
>> > >     _ephoto_populate_entries(ed);
>> > >  }
>> > >
>> > > -static Eina_Bool
>> > > -_monitor_created(void *data, int type EINA_UNUSED, void *event)
>> > > +static void
>> > > +_monitor_cb(void *data, Ecore_File_Monitor *em EINA_UNUSED,
>> > > +    Ecore_File_Event event, const char *path)
>> > >  {
>> > >     Ephoto *ephoto = data;
>> > > -   Eio_Monitor_Event *ev = event;
>> > >     char file[PATH_MAX], dir[PATH_MAX];
>> > >
>> > > -   snprintf(file, PATH_MAX, "%s", ev->filename);
>> > > +   snprintf(file, PATH_MAX, "%s", path);
>> > >     snprintf(dir, PATH_MAX, "%s", ecore_file_dir_get(file));
>> > >
>> > >     if (strcmp(ephoto->config->directory, dir))
>> > > -     return ECORE_CALLBACK_PASS_ON;
>> > > +     return;
>> > >
>> > > -   if (evas_object_image_extension_can_load_get(ev->filename))
>> > > +   if (evas_object_image_extension_can_load_get(path))
>> > >       {
>> > > -        Eina_List *l;
>> > > -        Ephoto_Entry *entry;
>> > > -        char buf[PATH_MAX];
>> > > +        if (event == ECORE_FILE_EVENT_CREATED_FILE)
>> > > +          {
>> > > +             Eina_List *l;
>> > > +             Ephoto_Entry *entry;
>> > > +             char buf[PATH_MAX];
>> > >
>> > > -        EINA_LIST_FOREACH(ephoto->entries, l, entry)
>> > > -          {
>> > > -             if (!strcmp(entry->path, ev->filename))
>> > > -               return ECORE_CALLBACK_PASS_ON;
>> > > -          }
>> > > -        snprintf(buf, PATH_MAX, "%s", ev->filename);
>> > > -        entry = ephoto_entry_new(ephoto, ev->filename, basename(buf),
>> > > -            EINA_FILE_REG);
>> > > -        ephoto_single_browser_path_created(ephoto->single_browser,
>> entry);
>> > > -        if (!ephoto->entries)
>> > > -          {
>> > > -             ephoto->entries = eina_list_append(ephoto->entries,
>> entry);
>> > > -          }
>> > > -        else
>> > > -          {
>> > > -             int near_cmp;
>> > > -             Eina_List *near_node =
>> > > -                 eina_list_search_sorted_near_list(ephoto->entries,
>> > > -                 ephoto_entries_cmp, entry, &near_cmp);
>> > > -
>> > > -             if (near_cmp < 0)
>> > > -                ephoto->entries =
>> > > -                    eina_list_append_relative_list(ephoto->entries,
>> entry,
>> > > -                    near_node);
>> > > +             EINA_LIST_FOREACH(ephoto->entries, l, entry)
>> > > +               {
>> > > +                  if (!strcmp(entry->path, path))
>> > > +                    return;
>> > > +               }
>> > > +             snprintf(buf, PATH_MAX, "%s", path);
>> > > +             entry = ephoto_entry_new(ephoto, path, basename(buf),
>> > > +                 EINA_FILE_REG);
>> > > +
>>  ephoto_single_browser_path_created(ephoto->single_browser,
>> > > entry);
>> > > +             if (!ephoto->entries)
>> > > +               {
>> > > +                  ephoto->entries = eina_list_append(ephoto->entries,
>> > > entry);
>> > > +               }
>> > >               else
>> > > -                ephoto->entries =
>> > > -                    eina_list_prepend_relative_list(ephoto->entries,
>> > > entry,
>> > > -                    near_node);
>> > > +               {
>> > > +                  int near_cmp;
>> > > +                  Eina_List *near_node =
>> > > +
>> eina_list_search_sorted_near_list(ephoto->entries,
>> > > +                      ephoto_entries_cmp, entry, &near_cmp);
>> > > +
>> > > +                  if (near_cmp < 0)
>> > > +                     ephoto->entries =
>> > > +
>>  eina_list_append_relative_list(ephoto->entries,
>> > > entry,
>> > > +                         near_node);
>> > > +                  else
>> > > +                     ephoto->entries =
>> > > +
>>  eina_list_prepend_relative_list(ephoto->entries,
>> > > entry,
>> > > +                         near_node);
>> > > +               }
>> > > +             ephoto_thumb_browser_insert(ephoto, entry);
>> > > +             return;
>> > >            }
>> > > -        ephoto_thumb_browser_insert(ephoto, entry);
>> > > -     }
>> > > -   return ECORE_CALLBACK_PASS_ON;
>> > > -}
>> > > -
>> > > -static Eina_Bool
>> > > -_monitor_deleted(void *data, int type EINA_UNUSED, void *event)
>> > > -{
>> > > -   Ephoto *ephoto = data;
>> > > -   Eio_Monitor_Event *ev = event;
>> > > -   char file[PATH_MAX], dir[PATH_MAX];
>> > > -
>> > > -   snprintf(file, PATH_MAX, "%s", ev->filename);
>> > > -   snprintf(dir, PATH_MAX, "%s", ecore_file_dir_get(file));
>> > > -
>> > > -   if (strcmp(ephoto->config->directory, dir))
>> > > -     return ECORE_CALLBACK_PASS_ON;
>> > > -
>> > > -   if (evas_object_image_extension_can_load_get(ev->filename))
>> > > -     {
>> > > -        Eina_List *l;
>> > > -        Ephoto_Entry *entry;
>> > > -
>> > > -        EINA_LIST_FOREACH(ephoto->entries, l, entry)
>> > > +        else if (event == ECORE_FILE_EVENT_DELETED_FILE)
>> > >            {
>> > > -             if (!strcmp(entry->path, ev->filename))
>> > > +             Eina_List *l;
>> > > +             Ephoto_Entry *entry;
>> > > +
>> > > +             EINA_LIST_FOREACH(ephoto->entries, l, entry)
>> > >                 {
>> > > -                  ephoto_thumb_browser_remove(ephoto, entry);
>> > > -                  ephoto_entry_free(ephoto, entry);
>> > > -                  break;
>> > > +                  if (!strcmp(entry->path, path))
>> > > +                    {
>> > > +                       ephoto_thumb_browser_remove(ephoto, entry);
>> > > +                       ephoto_entry_free(ephoto, entry);
>> > > +                       break;
>> > > +                    }
>> > >                 }
>> > > +             return;
>> > >            }
>> > > -     }
>> > > -   return ECORE_CALLBACK_PASS_ON;
>> > > -}
>> > > -
>> > > -static Eina_Bool
>> > > -_monitor_modified(void *data, int type EINA_UNUSED, void *event)
>> > > -{
>> > > -   Ephoto *ephoto = data;
>> > > -   Eio_Monitor_Event *ev = event;
>> > > -   char file[PATH_MAX], dir[PATH_MAX];
>> > > -
>> > > -   snprintf(file, PATH_MAX, "%s", ev->filename);
>> > > -   snprintf(dir, PATH_MAX, "%s", ecore_file_dir_get(file));
>> > > -
>> > > -   if (strcmp(ephoto->config->directory, dir))
>> > > -     return ECORE_CALLBACK_PASS_ON;
>> > > -
>> > > -   if (evas_object_image_extension_can_load_get(ev->filename))
>> > > -     {
>> > > -        Eina_List *l;
>> > > -        Ephoto_Entry *entry;
>> > > -        int found = 0;
>> > > -
>> > > -        EINA_LIST_FOREACH(ephoto->entries, l, entry)
>> > > +        else if (event == ECORE_FILE_EVENT_MODIFIED)
>> > >            {
>> > > -             if (!strcmp(entry->path, ev->filename))
>> > > +             Eina_List *l;
>> > > +             Ephoto_Entry *entry;
>> > > +             int found = 0;
>> > > +
>> > > +             EINA_LIST_FOREACH(ephoto->entries, l, entry)
>> > >                 {
>> > > -                  if (!ecore_file_exists(entry->path))
>> > > +                  if (!strcmp(entry->path, path))
>> > >                      {
>> > > -                       elm_object_item_del(entry->item);
>> > > -                       ephoto_entry_free(ephoto, entry);
>> > > +                       if (!ecore_file_exists(entry->path))
>> > > +                         {
>> > > +                            elm_object_item_del(entry->item);
>> > > +                            ephoto_entry_free(ephoto, entry);
>> > > +                         }
>> > > +                       else
>> > > +                         {
>> > > +                            if (!entry->item)
>> > > +                              ephoto_thumb_browser_insert(ephoto,
>> entry);
>> > > +                            else
>> > > +                              ephoto_thumb_browser_update(ephoto,
>> entry);
>> > > +                         }
>> > > +                       found = 1;
>> > > +                       break;
>> > > +                    }
>> > > +               }
>> > > +             if (!found)
>> > > +               {
>> > > +                  char buf[PATH_MAX];
>> > > +                  snprintf(buf, PATH_MAX, "%s", path);
>> > > +                  entry = ephoto_entry_new(ephoto, path,
>> basename(buf),
>> > > +                      EINA_FILE_REG);
>> > > +
>> > > ephoto_single_browser_path_created(ephoto->single_browser, entry);
>> > > +                  if (!ephoto->entries)
>> > > +                    {
>> > > +                       ephoto->entries =
>> > > eina_list_append(ephoto->entries, entry);
>> > >                      }
>> > >                    else
>> > >                      {
>> > > -                       if (!entry->item)
>> > > -                         ephoto_thumb_browser_insert(ephoto, entry);
>> > > +                       int near_cmp;
>> > > +                       Eina_List *near_node =
>> > > +
>> > >  eina_list_search_sorted_near_list(ephoto->entries,
>> > > +                           ephoto_entries_cmp, entry, &near_cmp);
>> > > +
>> > > +                       if (near_cmp < 0)
>> > > +                          ephoto->entries =
>> > > +
>> > > eina_list_append_relative_list(ephoto->entries, entry,
>> > > +                              near_node);
>> > >                         else
>> > > -                         ephoto_thumb_browser_update(ephoto, entry);
>> > > +                          ephoto->entries =
>> > > +
>> > > eina_list_prepend_relative_list(ephoto->entries, entry,
>> > > +                              near_node);
>> > >                      }
>> > > -                  found = 1;
>> > > -                  break;
>> > > +                  ephoto_thumb_browser_insert(ephoto, entry);
>> > > +                  return;
>> > >                 }
>> > >            }
>> > > -        if (!found)
>> > > -          _monitor_created(ephoto, 0, ev);
>> > >       }
>> > > -   return ECORE_CALLBACK_PASS_ON;
>> > >  }
>> > >
>> > >  void
>> > > @@ -610,23 +604,8 @@ ephoto_directory_set(Ephoto *ephoto, const char
>> > > *path, Evas_Object *expanded,
>> > >        ecore_job_del(ed->ephoto->job.change_dir);
>> > >     ed->ephoto->job.change_dir = ecore_job_add(_ephoto_change_dir, ed);
>> > >     if (ephoto->monitor)
>> > > -     {
>> > > -        Ecore_Event_Handler *handler;
>> > > -
>> > > -        EINA_LIST_FREE(ephoto->monitor_handlers, handler)
>> > > -          ecore_event_handler_del(handler);
>> > > -        eio_monitor_del(ephoto->monitor);
>> > > -     }
>> > > -   ephoto->monitor = eio_monitor_add(path);
>> > > -   ephoto->monitor_handlers =
>> eina_list_append(ephoto->monitor_handlers,
>> > > -       ecore_event_handler_add(EIO_MONITOR_FILE_CREATED,
>> _monitor_created,
>> > > -       ephoto));
>> > > -   ephoto->monitor_handlers =
>> eina_list_append(ephoto->monitor_handlers,
>> > > -       ecore_event_handler_add(EIO_MONITOR_FILE_DELETED,
>> _monitor_deleted,
>> > > -       ephoto));
>> > > -   ephoto->monitor_handlers =
>> eina_list_append(ephoto->monitor_handlers,
>> > > -       ecore_event_handler_add(EIO_MONITOR_FILE_MODIFIED,
>> > > _monitor_modified,
>> > > -       ephoto));
>> > > +     ecore_file_monitor_del(ephoto->monitor);
>> > > +   ephoto->monitor = ecore_file_monitor_add(path, _monitor_cb,
>> ephoto);
>> > >  }
>> > >
>> > >  static Eina_Bool
>> > > @@ -789,8 +768,7 @@ ephoto_entry_free(Ephoto *ephoto, Ephoto_Entry
>> *entry)
>> > >  {
>> > >     Ephoto_Entry_Free_Listener *fl;
>> > >     Eina_List *node;
>> > > -   Ecore_Event_Handler *handler;
>> > > -
>> > > +
>> > >     EINA_LIST_FREE(entry->free_listeners, fl)
>> > >       {
>> > >          fl->cb((void *) fl->data, entry);
>> > > @@ -810,9 +788,7 @@ ephoto_entry_free(Ephoto *ephoto, Ephoto_Entry
>> *entry)
>> > >     eina_stringshare_del(entry->path);
>> > >     eina_stringshare_del(entry->label);
>> > >     if (entry->monitor)
>> > > -     eio_monitor_del(entry->monitor);
>> > > -   EINA_LIST_FREE(entry->monitor_handlers, handler)
>> > > -     ecore_event_handler_del(handler);
>> > > +     ecore_file_monitor_del(entry->monitor);
>> > >     free(entry);
>> > >  }
>> > >
>> > > diff --git a/src/bin/ephoto_single_browser.c
>> > > b/src/bin/ephoto_single_browser.c
>> > > index f99e518..9dd7044 100644
>> > > --- a/src/bin/ephoto_single_browser.c
>> > > +++ b/src/bin/ephoto_single_browser.c
>> > > @@ -40,7 +40,7 @@ struct _Ephoto_Single_Browser
>> > >  struct _Ephoto_Viewer
>> > >  {
>> > >     Eina_List *handlers;
>> > > -   Eio_Monitor *monitor;
>> > > +   Ecore_File_Monitor *monitor;
>> > >     Evas_Object *scroller;
>> > >     Evas_Object *table;
>> > >     Evas_Object *image;
>> > > @@ -61,12 +61,8 @@ _viewer_del(void *data, Evas *e EINA_UNUSED,
>> > > Evas_Object *obj EINA_UNUSED,
>> > >      void *event_info EINA_UNUSED)
>> > >  {
>> > >     Ephoto_Viewer *v = data;
>> > > -   Ecore_Event_Handler *handler;
>> > > -
>> > > -   EINA_LIST_FREE(v->handlers, handler)
>> > > -      ecore_event_handler_del(handler);
>> > >     if (v->monitor)
>> > > -     eio_monitor_del(v->monitor);
>> > > +     ecore_file_monitor_del(v->monitor);
>> > >     free(v);
>> > >  }
>> > >
>> > > @@ -176,34 +172,37 @@ _get_edje_group(const char  *path)
>> > >     return group;
>> > >  }
>> > >
>> > > -static Eina_Bool
>> > > -_monitor_modified(void *data, int type EINA_UNUSED, void *event
>> > > EINA_UNUSED)
>> > > +static void
>> > > +_monitor_cb(void *data, Ecore_File_Monitor *em EINA_UNUSED,
>> > > +    Ecore_File_Event event, const char *path EINA_UNUSED)
>> > >  {
>> > >     Ephoto_Single_Browser *sb = data;
>> > >     Ephoto_Viewer *v = evas_object_data_get(sb->viewer, "viewer");
>> > >
>> > > -   if (!ecore_file_exists(sb->entry->path))
>> > > -     ephoto_entry_free(sb->ephoto, sb->entry);
>> > > -   else
>> > > +   if (event == ECORE_FILE_EVENT_MODIFIED)
>> > >       {
>> > > -        Evas_Object *tmp;
>> > > -        Evas_Coord w, h;
>> > > -        const char *group = _get_edje_group(sb->entry->path);
>> > > +        if (!ecore_file_exists(sb->entry->path))
>> > > +          ephoto_entry_free(sb->ephoto, sb->entry);
>> > > +        else
>> > > +          {
>> > > +             Evas_Object *tmp;
>> > > +             Evas_Coord w, h;
>> > > +             const char *group = _get_edje_group(sb->entry->path);
>> > >
>> > > -        tmp = evas_object_image_add(evas_object_evas_get(v->table));
>> > > -        evas_object_image_file_set(tmp, sb->entry->path, group);
>> > > -        evas_object_image_size_get(tmp, &w, &h);
>> > > -        evas_object_del(tmp);
>> > > +             tmp =
>> evas_object_image_add(evas_object_evas_get(v->table));
>> > > +             evas_object_image_file_set(tmp, sb->entry->path, group);
>> > > +             evas_object_image_size_get(tmp, &w, &h);
>> > > +             evas_object_del(tmp);
>> > >
>> > > -        if (w > 0 && h > 0)
>> > > -          {
>> > > -             evas_object_hide(v->image);
>> > > -             elm_image_file_set(v->image, sb->entry->path, group);
>> > > -             evas_object_show(v->image);
>> > > +             if (w > 0 && h > 0)
>> > > +               {
>> > > +                  evas_object_hide(v->image);
>> > > +                  elm_image_file_set(v->image, sb->entry->path,
>> group);
>> > > +                  evas_object_show(v->image);
>> > > +               }
>> > >            }
>> > >       }
>> > > -
>> > > -   return ECORE_CALLBACK_PASS_ON;
>> > > +   return;
>> > >  }
>> > >
>> > >  static Evas_Object *
>> > > @@ -258,10 +257,7 @@ _viewer_add(Evas_Object *parent, const char *path,
>> > > Ephoto_Single_Browser *sb)
>> > >       }
>> > >
>> > >
>> > > -   v->monitor = eio_monitor_add(path);
>> > > -   v->handlers = eina_list_append(v->handlers,
>> > > -       ecore_event_handler_add(EIO_MONITOR_FILE_MODIFIED,
>> > > -           _monitor_modified, sb));
>> > > +   v->monitor = ecore_file_monitor_add(path, _monitor_cb, sb);
>> > >     return v->scroller;
>> > >
>> > >    error:
>> > > @@ -1353,6 +1349,7 @@ _save_image_as_done(void *data, Evas_Object *obj
>> > > EINA_UNUSED, void *event_info)
>> > >                 }
>> > >              else
>> > >                {
>> > > +                  evas_object_del(opopup);
>> > >                   char *dir = ecore_file_dir_get(buf);
>> > >
>> > >                    if (strcmp(dir, sb->ephoto->config->directory))
>> > > diff --git a/src/bin/ephoto_thumb_browser.c
>> > > b/src/bin/ephoto_thumb_browser.c
>> > > index f3e221b..97ee42c 100644
>> > > --- a/src/bin/ephoto_thumb_browser.c
>> > > +++ b/src/bin/ephoto_thumb_browser.c
>> > > @@ -39,8 +39,7 @@ struct _Ephoto_Thumb_Browser
>> > >     Elm_Object_Item *last_sel;
>> > >     Ephoto_Sort sort;
>> > >     Eio_File *ls;
>> > > -   Eio_Monitor *monitor;
>> > > -   Eina_List *monitor_handlers;
>> > > +   Ecore_File_Monitor *monitor;
>> > >     Eina_List *cut_items;
>> > >     Eina_List *copy_items;
>> > >     Eina_List *handlers;
>> > > @@ -86,12 +85,8 @@ static void _grid_mouse_up_cb(void *data, Evas *e
>> > > EINA_UNUSED,
>> > >  static void _ephoto_thumb_activated(void *data, Evas_Object *obj
>> > > EINA_UNUSED,
>> > >      void *event_info);
>> > >  static void _zoom_set(Ephoto_Thumb_Browser *tb, int zoom);
>> > > -static Eina_Bool _monitor_created(void *data, int type EINA_UNUSED,
>> > > -    void *event);
>> > > -static Eina_Bool _monitor_deleted(void *data, int type EINA_UNUSED,
>> > > -    void *event);
>> > > -static Eina_Bool _monitor_modified(void *data, int type EINA_UNUSED,
>> > > -    void *event);
>> > > +static void _monitor_cb(void *data, Ecore_File_Monitor *em
>> EINA_UNUSED,
>> > > +    Ecore_File_Event event, const char *path);
>> > >
>> > >  static void
>> > >  _update_info_label(Ephoto_Thumb_Browser *tb)
>> > > @@ -494,181 +489,124 @@ _check_for_subdirs(Ephoto_Entry *entry)
>> > >     return EINA_FALSE;
>> > >  }
>> > >
>> > > -static Eina_Bool
>> > > -_monitor_created(void *data, int type EINA_UNUSED, void *event)
>> > > +static void
>> > > +_monitor_cb(void *data, Ecore_File_Monitor *em EINA_UNUSED,
>> > > +    Ecore_File_Event event, const char *path)
>> > >  {
>> > >     Elm_Object_Item *item;
>> > >     Ephoto_Entry *entry = data;
>> > >     Ephoto_Entry *e;
>> > > -   Eio_Monitor_Event *ev = event;
>> > >     char file[PATH_MAX], dir[PATH_MAX];
>> > >     const Elm_Genlist_Item_Class *ic;
>> > >     char buf[PATH_MAX];
>> > >
>> > >     if (!entry)
>> > > -     return ECORE_CALLBACK_PASS_ON;
>> > > -   if (!ecore_file_is_dir(ev->filename))
>> > > -     return ECORE_CALLBACK_PASS_ON;
>> > > +     return;
>> > >
>> > > -   snprintf(file, PATH_MAX, "%s", ev->filename);
>> > > +   snprintf(file, PATH_MAX, "%s", path);
>> > >     snprintf(dir, PATH_MAX, "%s", ecore_file_dir_get(file));
>> > >
>> > >     if (strcmp(entry->path, dir))
>> > > -     return ECORE_CALLBACK_PASS_ON;
>> > > -
>> > > -   item = elm_genlist_first_item_get(entry->genlist);
>> > > -   while (item)
>> > > -     {
>> > > -        e = elm_object_item_data_get(item);
>> > > -        if (!strcmp(e->path, ev->filename))
>> > > -           return ECORE_CALLBACK_PASS_ON;
>> > > -        item = elm_genlist_item_next_get(item);
>> > > -     }
>> > > -   if (elm_genlist_item_type_get(entry->item) == ELM_GENLIST_ITEM_TREE
>> &&
>> > > -       elm_genlist_item_expanded_get(entry->item) == EINA_TRUE)
>> > > +     return;
>> > > +   if (event == ECORE_FILE_EVENT_CREATED_DIRECTORY)
>> > >       {
>> > > -        ic = &_ephoto_dir_class;
>> > > -        snprintf(buf, PATH_MAX, "%s", ev->filename);
>> > > -        e = ephoto_entry_new(entry->ephoto, ev->filename,
>> basename(buf),
>> > > -            EINA_FILE_DIR);
>> > > -        e->genlist = entry->genlist;
>> > > -        e->parent = entry->item;
>> > > -        e->item =
>> > > -            elm_genlist_item_sorted_insert(entry->genlist, ic, e,
>> > > -            e->parent, ELM_GENLIST_ITEM_NONE, _entry_cmp, NULL, NULL);
>> > > -        if (e->item)
>> > > +        if (!ecore_file_is_dir(path))
>> > > +          return;
>> > > +        item = elm_genlist_first_item_get(entry->genlist);
>> > > +        while (item)
>> > >            {
>> > > -             e->monitor = eio_monitor_add(e->path);
>> > > -             e->monitor_handlers =
>> eina_list_append(e->monitor_handlers,
>> > > -
>>  ecore_event_handler_add(EIO_MONITOR_DIRECTORY_CREATED,
>> > > -                 _monitor_created, e));
>> > > -             e->monitor_handlers =
>> eina_list_append(e->monitor_handlers,
>> > > -
>>  ecore_event_handler_add(EIO_MONITOR_DIRECTORY_DELETED,
>> > > -                 _monitor_deleted, e));
>> > > -             e->monitor_handlers =
>> eina_list_append(e->monitor_handlers,
>> > > -
>>  ecore_event_handler_add(EIO_MONITOR_DIRECTORY_MODIFIED,
>> > > -                 _monitor_modified, e));
>> > > +             e = elm_object_item_data_get(item);
>> > > +             if (!strcmp(e->path, path))
>> > > +               return;
>> > > +             item = elm_genlist_item_next_get(item);
>> > >            }
>> > > -     }
>> > > -   if (elm_genlist_item_type_get(entry->item) ==
>> ELM_GENLIST_ITEM_NONE)
>> > > -     {
>> > > -        Elm_Object_Item *parent;
>> > > -        Ecore_Event_Handler *handler;
>> > > -
>> > > -        ic = &_ephoto_dir_class;
>> > > -        parent =
>> > > -            elm_genlist_item_insert_before(entry->genlist, ic, entry,
>> > > -                entry->parent, entry->item, ELM_GENLIST_ITEM_TREE,
>> NULL,
>> > > NULL);
>> > > -        entry->no_delete = EINA_TRUE;
>> > > -        if (entry->monitor)
>> > > +        if (elm_genlist_item_type_get(entry->item) ==
>> > > ELM_GENLIST_ITEM_TREE &&
>> > > +            elm_genlist_item_expanded_get(entry->item) == EINA_TRUE)
>> > >            {
>> > > -             eio_monitor_del(entry->monitor);
>> > > -             EINA_LIST_FREE(entry->monitor_handlers, handler)
>> > > -               ecore_event_handler_del(handler);
>> > > +             ic = &_ephoto_dir_class;
>> > > +             snprintf(buf, PATH_MAX, "%s", path);
>> > > +             e = ephoto_entry_new(entry->ephoto, path, basename(buf),
>> > > +                 EINA_FILE_DIR);
>> > > +             e->genlist = entry->genlist;
>> > > +             e->parent = entry->item;
>> > > +             e->item =
>> > > +                 elm_genlist_item_sorted_insert(entry->genlist, ic, e,
>> > > +                 e->parent, ELM_GENLIST_ITEM_NONE, _entry_cmp, NULL,
>> > > NULL);
>> > > +             if (e->item)
>> > > +               e->monitor = ecore_file_monitor_add(e->path,
>> _monitor_cb,
>> > > e);
>> > >            }
>> > > -        elm_object_item_del(entry->item);
>> > > -        entry->item = parent;
>> > > -        entry->no_delete = EINA_FALSE;
>> > > -        entry->monitor = eio_monitor_add(entry->path);
>> > > -        entry->monitor_handlers =
>> > > eina_list_append(entry->monitor_handlers,
>> > > -            ecore_event_handler_add(EIO_MONITOR_DIRECTORY_CREATED,
>> > > -            _monitor_created, entry));
>> > > -        entry->monitor_handlers =
>> > > eina_list_append(entry->monitor_handlers,
>> > > -            ecore_event_handler_add(EIO_MONITOR_DIRECTORY_DELETED,
>> > > -            _monitor_deleted, entry));
>> > > -        entry->monitor_handlers =
>> > > eina_list_append(entry->monitor_handlers,
>> > > -            ecore_event_handler_add(EIO_MONITOR_DIRECTORY_MODIFIED,
>> > > -            _monitor_modified, entry));
>> > > -     }
>> > > -   return ECORE_CALLBACK_PASS_ON;
>> > > -}
>> > > -
>> > > -static Eina_Bool
>> > > -_monitor_deleted(void *data, int type EINA_UNUSED, void *event)
>> > > -{
>> > > -   Elm_Object_Item *item;
>> > > -   Ephoto_Entry *entry = data;
>> > > -   Eio_Monitor_Event *ev = event;
>> > > -   char file[PATH_MAX], dir[PATH_MAX];
>> > > -   const Elm_Genlist_Item_Class *ic;
>> > > -
>> > > -   if (!entry)
>> > > -     return ECORE_CALLBACK_PASS_ON;
>> > > -
>> > > -   snprintf(file, PATH_MAX, "%s", ev->filename);
>> > > -   snprintf(dir, PATH_MAX, "%s", ecore_file_dir_get(file));
>> > > -
>> > > -   if (strcmp(entry->path, dir))
>> > > -     return ECORE_CALLBACK_PASS_ON;
>> > > -
>> > > -   item = elm_genlist_first_item_get(entry->genlist);
>> > > -   while (item)
>> > > -     {
>> > > -        Ephoto_Entry *e = elm_object_item_data_get(item);
>> > > -        if (!strcmp(e->path, ev->filename))
>> > > +        if (elm_genlist_item_type_get(entry->item) ==
>> > > ELM_GENLIST_ITEM_NONE)
>> > >            {
>> > > -             elm_object_item_del(e->item);
>> > > -             break;
>> > > +             Elm_Object_Item *parent;
>> > > +
>> > > +             ic = &_ephoto_dir_class;
>> > > +             parent =
>> > > +                 elm_genlist_item_insert_before(entry->genlist, ic,
>> entry,
>> > > +                     entry->parent, entry->item,
>> ELM_GENLIST_ITEM_TREE,
>> > > NULL, NULL);
>> > > +             entry->no_delete = EINA_TRUE;
>> > > +             if (entry->monitor)
>> > > +               ecore_file_monitor_del(entry->monitor);
>> > > +             elm_object_item_del(entry->item);
>> > > +             entry->item = parent;
>> > > +             entry->no_delete = EINA_FALSE;
>> > > +             entry->monitor = ecore_file_monitor_add(entry->path,
>> > > _monitor_cb, entry);
>> > >            }
>> > > -        item = elm_genlist_item_next_get(item);
>> > > -     }
>> > > -   if (elm_genlist_item_type_get(entry->item) == ELM_GENLIST_ITEM_TREE
>> &&
>> > > -       _check_for_subdirs(entry) == EINA_FALSE)
>> > > -     {
>> > > -        Elm_Object_Item *parent;
>> > > -
>> > > -        ic = &_ephoto_dir_class;
>> > > -        parent =
>> > > -            elm_genlist_item_insert_before(entry->genlist, ic, entry,
>> > > -            entry->parent, entry->item, ELM_GENLIST_ITEM_NONE, NULL,
>> > > NULL);
>> > > -        entry->no_delete = EINA_TRUE;
>> > > -        elm_object_item_del(entry->item);
>> > > -        entry->item = parent;
>> > > -        entry->no_delete = EINA_FALSE;
>> > > -     }
>> > > -   if (!ecore_file_exists(entry->ephoto->config->directory))
>> > > -     {
>> > > -        ephoto_directory_set(entry->ephoto, entry->path,
>> entry->parent,
>> > > 0, 1);
>> > > -        ephoto_title_set(entry->ephoto, entry->path);
>> > > +        return;
>> > >       }
>> > > -   return ECORE_CALLBACK_PASS_ON;
>> > > -}
>> > > -
>> > > -static Eina_Bool
>> > > -_monitor_modified(void *data, int type EINA_UNUSED, void *event)
>> > > -{
>> > > -   Ephoto_Entry *entry = data;
>> > > -   Eio_Monitor_Event *ev = event;
>> > > -   char file[PATH_MAX], dir[PATH_MAX];
>> > > -
>> > > -   if (!entry)
>> > > -     return ECORE_CALLBACK_PASS_ON;
>> > > -   if (!ecore_file_is_dir(ev->filename))
>> > > -     return ECORE_CALLBACK_PASS_ON;
>> > > -
>> > > -   snprintf(file, PATH_MAX, "%s", ev->filename);
>> > > -   snprintf(dir, PATH_MAX, "%s", ecore_file_dir_get(file));
>> > > -
>> > > -   if (strcmp(entry->path, dir))
>> > > -     return ECORE_CALLBACK_PASS_ON;
>> > > -
>> > > -   if ((elm_genlist_item_expanded_get(entry->item) == EINA_TRUE))
>> > > +   else if (event == ECORE_FILE_EVENT_DELETED_DIRECTORY)
>> > >       {
>> > > -        Elm_Object_Item *item;
>> > > -
>> > >          item = elm_genlist_first_item_get(entry->genlist);
>> > >          while (item)
>> > >            {
>> > > -             Ephoto_Entry *e = elm_object_item_data_get(item);
>> > > -             if (!strcmp(e->path, ev->filename))
>> > > +             e = elm_object_item_data_get(item);
>> > > +             if (!strcmp(e->path, path))
>> > >                 {
>> > > -                  elm_genlist_item_update(e->item);
>> > > +                  elm_object_item_del(e->item);
>> > >                    break;
>> > >                 }
>> > >               item = elm_genlist_item_next_get(item);
>> > >            }
>> > > +        if (elm_genlist_item_type_get(entry->item) ==
>> > > ELM_GENLIST_ITEM_TREE &&
>> > > +            _check_for_subdirs(entry) == EINA_FALSE)
>> > > +          {
>> > > +             Elm_Object_Item *parent;
>> > > +
>> > > +             ic = &_ephoto_dir_class;
>> > > +             parent =
>> > > +                 elm_genlist_item_insert_before(entry->genlist, ic,
>> entry,
>> > > +                 entry->parent, entry->item, ELM_GENLIST_ITEM_NONE,
>> NULL,
>> > > NULL);
>> > > +             entry->no_delete = EINA_TRUE;
>> > > +             elm_object_item_del(entry->item);
>> > > +             entry->item = parent;
>> > > +             entry->no_delete = EINA_FALSE;
>> > > +          }
>> > > +        if (!ecore_file_exists(entry->ephoto->config->directory))
>> > > +          {
>> > > +             ephoto_directory_set(entry->ephoto, entry->path,
>> > > entry->parent, 0, 1);
>> > > +             ephoto_title_set(entry->ephoto, entry->path);
>> > > +          }
>> > > +        return;
>> > > +     }
>> > > +   else if (event == ECORE_FILE_EVENT_MODIFIED)
>> > > +     {
>> > > +        if (!ecore_file_is_dir(path))
>> > > +          return;
>> > > +        if ((elm_genlist_item_expanded_get(entry->item) == EINA_TRUE))
>> > > +          {
>> > > +             item = elm_genlist_first_item_get(entry->genlist);
>> > > +             while (item)
>> > > +               {
>> > > +                  e = elm_object_item_data_get(item);
>> > > +                  if (!strcmp(e->path, path))
>> > > +                    {
>> > > +                       elm_genlist_item_update(e->item);
>> > > +                       break;
>> > > +                    }
>> > > +                  item = elm_genlist_item_next_get(item);
>> > > +               }
>> > > +          }
>> > > +        return;
>> > >       }
>> > > -   return ECORE_CALLBACK_PASS_ON;
>> > >  }
>> > >
>> > >  static Eina_Bool
>> > > @@ -715,20 +653,8 @@ _todo_items_process(void *data)
>> > >              }
>> > >             else
>> > >               {
>> > > -                entry->monitor = eio_monitor_add(entry->path);
>> > > -                entry->monitor_handlers = eina_list_append(
>> > > -                    entry->monitor_handlers,
>> > > -
>> ecore_event_handler_add(EIO_MONITOR_DIRECTORY_CREATED,
>> > > -                        _monitor_created, entry));
>> > > -                entry->monitor_handlers = eina_list_append(
>> > > -                    entry->monitor_handlers,
>> > > -
>> ecore_event_handler_add(EIO_MONITOR_DIRECTORY_DELETED,
>> > > -                        _monitor_deleted, entry));
>> > > -                entry->monitor_handlers = eina_list_append(
>> > > -                    entry->monitor_handlers,
>> > > -
>> > > ecore_event_handler_add(EIO_MONITOR_DIRECTORY_MODIFIED,
>> > > -                        _monitor_modified, entry));
>> > > -                entry->genlist = tb->fsel;
>> > > +               entry->monitor = ecore_file_monitor_add(entry->path,
>> > > _monitor_cb, entry);
>> > > +               entry->genlist = tb->fsel;
>> > >               }
>> > >          }
>> > >        else
>> > > @@ -3566,12 +3492,7 @@ _main_del(void *data, Evas *e EINA_UNUSED,
>> > > Evas_Object *obj EINA_UNUSED,
>> > >     if (tb->searchentries)
>> > >        eina_list_free(tb->searchentries);
>> > >     if (tb->monitor)
>> > > -     {
>> > > -        eio_monitor_del(tb->monitor);
>> > > -        EINA_LIST_FREE(tb->monitor_handlers, handler)
>> > > -          ecore_event_handler_del(handler);
>> > > -     }
>> > > -
>> > > +     ecore_file_monitor_del(tb->monitor);
>> > >     free(tb);
>> > >  }
>> > >
>> > > @@ -3638,123 +3559,79 @@ _ephoto_thumb_populate_error(void *data, int
>> type
>> > > EINA_UNUSED,
>> > >     return ECORE_CALLBACK_PASS_ON;
>> > >  }
>> > >
>> > > -static Eina_Bool
>> > > -_top_monitor_created(void *data, int type EINA_UNUSED, void *event)
>> > > +static void
>> > > +_top_monitor_cb(void *data, Ecore_File_Monitor *em EINA_UNUSED,
>> > > +    Ecore_File_Event event, const char *path)
>> > >  {
>> > >     Elm_Object_Item *item;
>> > >     Ephoto_Thumb_Browser *tb = data;
>> > > -   Eio_Monitor_Event *ev = event;
>> > >     Ephoto_Entry *e;
>> > >     const Elm_Genlist_Item_Class *ic;
>> > >     char buf[PATH_MAX], file[PATH_MAX], dir[PATH_MAX];
>> > >
>> > >     if (!tb)
>> > > -     return ECORE_CALLBACK_PASS_ON;
>> > > -   if (!ecore_file_is_dir(ev->filename))
>> > > -     return ECORE_CALLBACK_PASS_ON;
>> > > -
>> > > -   snprintf(file, PATH_MAX, "%s", ev->filename);
>> > > +     return;
>> > > +   snprintf(file, PATH_MAX, "%s", path);
>> > >     snprintf(dir, PATH_MAX, "%s", ecore_file_dir_get(file));
>> > >
>> > >     if (strcmp(tb->ephoto->top_directory, dir))
>> > > -     return ECORE_CALLBACK_PASS_ON;
>> > > -
>> > > -   item = elm_genlist_first_item_get(tb->fsel);
>> > > -   while (item)
>> > > +     return;
>> > > +   if (event == ECORE_FILE_EVENT_CREATED_DIRECTORY)
>> > >       {
>> > > -        e = elm_object_item_data_get(item);
>> > > -        if (!strcmp(e->path, ev->filename))
>> > > -          return ECORE_CALLBACK_PASS_ON;
>> > > -        item = elm_genlist_item_next_get(item);
>> > > +       if (!ecore_file_is_dir(path))
>> > > +         return;
>> > > +       item = elm_genlist_first_item_get(tb->fsel);
>> > > +        while (item)
>> > > +          {
>> > > +             e = elm_object_item_data_get(item);
>> > > +             if (!strcmp(e->path, path))
>> > > +               return;
>> > > +             item = elm_genlist_item_next_get(item);
>> > > +          }
>> > > +        snprintf(buf, PATH_MAX, "%s", path);
>> > > +        e = ephoto_entry_new(tb->ephoto, path, basename(buf),
>> > > +            EINA_FILE_DIR);
>> > > +        e->genlist = tb->fsel;
>> > > +        ic = &_ephoto_dir_class;
>> > > +        e->item =
>> > > +            elm_genlist_item_append(tb->fsel, ic, e,
>> > > +            NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
>> > > +        if (e->item)
>> > > +          e->monitor = ecore_file_monitor_add(e->path, _monitor_cb,
>> e);
>> > > +        return;
>> > >       }
>> > > -   snprintf(buf, PATH_MAX, "%s", ev->filename);
>> > > -   e = ephoto_entry_new(tb->ephoto, ev->filename, basename(buf),
>> > > -       EINA_FILE_DIR);
>> > > -   e->genlist = tb->fsel;
>> > > -   ic = &_ephoto_dir_class;
>> > > -   e->item =
>> > > -         elm_genlist_item_append(tb->fsel, ic, e,
>> > > -         NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
>> > > -   if (e->item)
>> > > +   else if (event == ECORE_FILE_EVENT_DELETED_DIRECTORY)
>> > >       {
>> > > -        e->monitor = eio_monitor_add(e->path);
>> > > -        e->monitor_handlers = eina_list_append(e->monitor_handlers,
>> > > -            ecore_event_handler_add(EIO_MONITOR_DIRECTORY_CREATED,
>> > > -                _monitor_created, e));
>> > > -        e->monitor_handlers = eina_list_append(e->monitor_handlers,
>> > > -            ecore_event_handler_add(EIO_MONITOR_DIRECTORY_DELETED,
>> > > -                _monitor_deleted, e));
>> > > -        e->monitor_handlers = eina_list_append(e->monitor_handlers,
>> > > -            ecore_event_handler_add(EIO_MONITOR_DIRECTORY_MODIFIED,
>> > > -                _monitor_modified, e));
>> > > -     }
>> > > -
>> > > -   return ECORE_CALLBACK_PASS_ON;
>> > > -}
>> > > -
>> > > -static Eina_Bool
>> > > -_top_monitor_deleted(void *data, int type EINA_UNUSED, void *event)
>> > > -{
>> > > -   Elm_Object_Item *item;
>> > > -   Ephoto_Thumb_Browser *tb = data;
>> > > -   Eio_Monitor_Event *ev = event;
>> > > -   char file[PATH_MAX], dir[PATH_MAX];
>> > > -
>> > > -   if (!tb)
>> > > -     return ECORE_CALLBACK_PASS_ON;
>> > > -
>> > > -   snprintf(file, PATH_MAX, "%s", ev->filename);
>> > > -   snprintf(dir, PATH_MAX, "%s", ecore_file_dir_get(file));
>> > > -
>> > > -   if (strcmp(tb->ephoto->top_directory, dir))
>> > > -     return ECORE_CALLBACK_PASS_ON;
>> > > -
>> > > -   item = elm_genlist_first_item_get(tb->fsel);
>> > > -   while (item)
>> > > -     {
>> > > -        Ephoto_Entry *e = elm_object_item_data_get(item);
>> > > -        if (!strcmp(e->path, ev->filename))
>> > > +        item = elm_genlist_first_item_get(tb->fsel);
>> > > +        while (item)
>> > >            {
>> > > -             elm_object_item_del(e->item);
>> > > -             break;
>> > > +             e = elm_object_item_data_get(item);
>> > > +             if (!strcmp(e->path, path))
>> > > +               {
>> > > +                  elm_object_item_del(e->item);
>> > > +                  break;
>> > > +               }
>> > > +             item = elm_genlist_item_next_get(item);
>> > >            }
>> > > -        item = elm_genlist_item_next_get(item);
>> > > +        return;
>> > >       }
>> > > -   return ECORE_CALLBACK_PASS_ON;
>> > > -}
>> > > -
>> > > -
>> > > -static Eina_Bool
>> > > -_top_monitor_modified(void *data, int type EINA_UNUSED, void *event)
>> > > -{
>> > > -   Elm_Object_Item *item;
>> > > -   Ephoto_Thumb_Browser *tb = data;
>> > > -   Eio_Monitor_Event *ev = event;
>> > > -   char file[PATH_MAX], dir[PATH_MAX];
>> > > -
>> > > -   if (!tb)
>> > > -     return ECORE_CALLBACK_PASS_ON;
>> > > -   if (!ecore_file_is_dir(ev->filename))
>> > > -     return ECORE_CALLBACK_PASS_ON;
>> > > -
>> > > -   snprintf(file, PATH_MAX, "%s", ev->filename);
>> > > -   snprintf(dir, PATH_MAX, "%s", ecore_file_dir_get(file));
>> > > -
>> > > -   if (strcmp(tb->ephoto->top_directory, dir))
>> > > -     return ECORE_CALLBACK_PASS_ON;
>> > > -
>> > > -   item = elm_genlist_first_item_get(tb->fsel);
>> > > -   while (item)
>> > > +   else if (event == ECORE_FILE_EVENT_MODIFIED)
>> > >       {
>> > > -        Ephoto_Entry *e = elm_object_item_data_get(item);
>> > > -        if (!strcmp(e->path, ev->filename))
>> > > +        if (!ecore_file_is_dir(path))
>> > > +          return;
>> > > +        item = elm_genlist_first_item_get(tb->fsel);
>> > > +        while (item)
>> > >            {
>> > > -             elm_genlist_item_update(e->item);
>> > > -             break;
>> > > +             e = elm_object_item_data_get(item);
>> > > +             if (!strcmp(e->path, path))
>> > > +               {
>> > > +                  elm_genlist_item_update(e->item);
>> > > +                  break;
>> > > +               }
>> > > +             item = elm_genlist_item_next_get(item);
>> > >            }
>> > > -        item = elm_genlist_item_next_get(item);
>> > > +        return;
>> > >       }
>> > > -   return ECORE_CALLBACK_PASS_ON;
>> > >  }
>> > >
>> > >  static Eina_Bool
>> > > @@ -3885,26 +3762,12 @@ ephoto_thumb_browser_top_dir_set(Ephoto
>> *ephoto,
>> > > const char *dir)
>> > >         evas_object_data_get(ephoto->thumb_browser, "thumb_browser");
>> > >
>> > >     if (tb->monitor)
>> > > -     {
>> > > -        Ecore_Event_Handler *handler;
>> > > -        eio_monitor_del(tb->monitor);
>> > > -        EINA_LIST_FREE(tb->monitor_handlers, handler)
>> > > -          ecore_event_handler_del(handler);
>> > > -     }
>> > > +     ecore_file_monitor_del(tb->monitor);
>> > >     if (ephoto->top_directory)
>> > >       eina_stringshare_replace(&ephoto->top_directory, dir);
>> > >     else
>> > >       ephoto->top_directory = eina_stringshare_add(dir);
>> > > -   tb->monitor = eio_monitor_add(dir);
>> > > -   tb->monitor_handlers = eina_list_append(tb->monitor_handlers,
>> > > -       ecore_event_handler_add(EIO_MONITOR_DIRECTORY_CREATED,
>> > > -           _top_monitor_created, tb));
>> > > -   tb->monitor_handlers = eina_list_append(tb->monitor_handlers,
>> > > -       ecore_event_handler_add(EIO_MONITOR_DIRECTORY_DELETED,
>> > > -           _top_monitor_deleted, tb));
>> > > -   tb->monitor_handlers = eina_list_append(tb->monitor_handlers,
>> > > -       ecore_event_handler_add(EIO_MONITOR_DIRECTORY_MODIFIED,
>> > > -           _top_monitor_modified, tb));
>> > > +   tb->monitor = ecore_file_monitor_add(dir, _top_monitor_cb, tb);
>> > >  }
>> > >
>> > >  void
>> > >
>> > > --
>> > >
>> > >
>> > >
>> >
>>
>> ------------------------------------------------------------------------------
>> > Site24x7 APM Insight: Get Deep Visibility into Application Performance
>> > APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month
>> > Monitor end-to-end web transactions and take corrective actions now
>> > Troubleshoot faster and improve end-user experience. Signup Now!
>> > http://pubads.g.doubleclick.net/gampad/clk?id=272487151&iu=/4140
>> > _______________________________________________
>> > enlightenment-devel mailing list
>> > [email protected]
>> > https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
>> >
>>
>> ------------------------------------------------------------------------------
>> Site24x7 APM Insight: Get Deep Visibility into Application Performance
>> APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month
>> Monitor end-to-end web transactions and take corrective actions now
>> Troubleshoot faster and improve end-user experience. Signup Now!
>> http://pubads.g.doubleclick.net/gampad/clk?id=272487151&iu=/4140
>> _______________________________________________
>> enlightenment-devel mailing list
>> [email protected]
>> https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
>>
> ------------------------------------------------------------------------------
> Site24x7 APM Insight: Get Deep Visibility into Application Performance
> APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month
> Monitor end-to-end web transactions and take corrective actions now
> Troubleshoot faster and improve end-user experience. Signup Now!
> http://pubads.g.doubleclick.net/gampad/clk?id=272487151&iu=/4140
> _______________________________________________
> enlightenment-devel mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
>



-- 
Cedric BAIL

------------------------------------------------------------------------------
Site24x7 APM Insight: Get Deep Visibility into Application Performance
APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month
Monitor end-to-end web transactions and take corrective actions now
Troubleshoot faster and improve end-user experience. Signup Now!
http://pubads.g.doubleclick.net/gampad/clk?id=272487151&iu=/4140
_______________________________________________
enlightenment-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel

Reply via email to