Ephoto: Use EIO instead of Ecore to handle the monitoring.

This commit is contained in:
Stephen Houston 2016-01-14 19:06:21 -06:00
parent f0369df28b
commit be49678df1
1 changed files with 28 additions and 10 deletions

View File

@ -38,7 +38,8 @@ struct _Ephoto_Single_Browser
struct _Ephoto_Viewer struct _Ephoto_Viewer
{ {
Ecore_File_Monitor *monitor; Eina_List *handlers;
Eio_Monitor *monitor;
Evas_Object *scroller; Evas_Object *scroller;
Evas_Object *table; Evas_Object *table;
Evas_Object *image; Evas_Object *image;
@ -60,28 +61,41 @@ _viewer_del(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
void *event_info EINA_UNUSED) void *event_info EINA_UNUSED)
{ {
Ephoto_Viewer *v = data; Ephoto_Viewer *v = data;
Ecore_Event_Handler *handler;
EINA_LIST_FREE(v->handlers, handler)
ecore_event_handler_del(handler);
if (v->monitor) if (v->monitor)
ecore_file_monitor_del(v->monitor); eio_monitor_del(v->monitor);
free(v); free(v);
} }
static void static Eina_Bool
_viewer_monitor(void *data, Ecore_File_Monitor *em EINA_UNUSED, _monitor_modified(void *data, int type EINA_UNUSED, void *event EINA_UNUSED)
Ecore_File_Event event, const char *path)
{ {
Ephoto_Single_Browser *sb = data; Ephoto_Single_Browser *sb = data;
Ephoto_Viewer *v = evas_object_data_get(sb->viewer, "viewer"); Ephoto_Viewer *v = evas_object_data_get(sb->viewer, "viewer");
if (!ecore_file_exists(path)) if (!ecore_file_exists(sb->entry->path))
ephoto_entry_free(sb->ephoto, sb->entry); ephoto_entry_free(sb->ephoto, sb->entry);
else if (event == ECORE_FILE_EVENT_MODIFIED) else
v->modified = EINA_TRUE; v->modified = EINA_TRUE;
else if (event == ECORE_FILE_EVENT_CLOSED && v->modified == EINA_TRUE) return ECORE_CALLBACK_PASS_ON;
}
static Eina_Bool
_monitor_closed(void *data, int type EINA_UNUSED, void *event EINA_UNUSED)
{
Ephoto_Single_Browser *sb = data;
Ephoto_Viewer *v = evas_object_data_get(sb->viewer, "viewer");
if (v->modified == EINA_TRUE)
{ {
ephoto_single_browser_entry_set(sb->main, sb->entry); ephoto_single_browser_entry_set(sb->main, sb->entry);
v->modified = EINA_FALSE; v->modified = EINA_FALSE;
} }
} return ECORE_CALLBACK_PASS_ON;
}
static Evas_Object * static Evas_Object *
_image_create_icon(void *data, Evas_Object *parent, Evas_Coord *xoff, _image_create_icon(void *data, Evas_Object *parent, Evas_Coord *xoff,
@ -232,7 +246,11 @@ _viewer_add(Evas_Object *parent, const char *path, Ephoto_Single_Browser *sb)
} }
v->monitor = ecore_file_monitor_add(path, _viewer_monitor, 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->handlers = eina_list_append(v->handlers,
ecore_event_handler_add(EIO_MONITOR_FILE_CLOSED, _monitor_closed, sb));
return v->scroller; return v->scroller;