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