From f3b720812eef9327b575b9716e54cfcb6325e9cb Mon Sep 17 00:00:00 2001 From: Cedric BAIL Date: Wed, 13 Oct 2010 17:46:02 +0000 Subject: [PATCH] * e, eio: fix ecore_thread_run breakage. SVN revision: 53371 --- legacy/eio/src/lib/eio_dir.c | 24 ++++++++++++++++++------ legacy/eio/src/lib/eio_file.c | 10 +++++----- legacy/eio/src/lib/eio_private.h | 4 ++-- legacy/eio/src/lib/eio_single.c | 18 +++++++++--------- 4 files changed, 34 insertions(+), 22 deletions(-) diff --git a/legacy/eio/src/lib/eio_dir.c b/legacy/eio/src/lib/eio_dir.c index 6b4456ff93..2475861db1 100644 --- a/legacy/eio/src/lib/eio_dir.c +++ b/legacy/eio/src/lib/eio_dir.c @@ -38,7 +38,7 @@ _eio_dir_recursiv_ls(Ecore_Thread *thread, Eio_Dir_Copy *copy, const char *targe it = eina_file_direct_ls(target); if (!it) { - eio_file_thread_error(©->progress.common); + eio_file_thread_error(©->progress.common, thread); return EINA_FALSE; } @@ -50,7 +50,7 @@ _eio_dir_recursiv_ls(Ecore_Thread *thread, Eio_Dir_Copy *copy, const char *targe case DT_UNKNOWN: if (stat(info->path, &buffer) != 0) { - eio_file_thread_error(©->progress.common); + eio_file_thread_error(©->progress.common, thread); goto on_error; } @@ -135,10 +135,16 @@ _eio_dir_copy_heavy(Ecore_Thread *thread, void *data) if (stat(copy->progress.dest, &buffer) != 0) { if (stat(copy->progress.source, &buffer) != 0) - goto on_error; + { + eio_file_thread_error(©->progress.common, thread); + goto on_error; + } if (mkdir(copy->progress.dest, buffer.st_mode) != 0) - goto on_error; + { + eio_file_thread_error(©->progress.common, thread); + goto on_error; + } } /* create all directory */ @@ -153,11 +159,17 @@ _eio_dir_copy_heavy(Ecore_Thread *thread, void *data) /* FIXME: in some case we already did a stat call, so would be nice to reuse previous result here */ /* FIXME: apply mode later so that readonly could be copied and property will be set correctly */ if (stat(dir, &buffer) != 0) - goto on_error; + { + eio_file_thread_error(©->progress.common, thread); + goto on_error; + } /* create the directory */ if (mkdir(target, buffer.st_mode) != 0) - goto on_error; + { + eio_file_thread_error(©->progress.common, thread); + goto on_error; + } step++; eio_progress_send(thread, ©->progress, step, count); diff --git a/legacy/eio/src/lib/eio_file.c b/legacy/eio/src/lib/eio_file.c index 7d317b79fc..4344f529e4 100644 --- a/legacy/eio/src/lib/eio_file.c +++ b/legacy/eio/src/lib/eio_file.c @@ -31,7 +31,7 @@ _eio_file_heavy(Ecore_Thread *thread, void *data) ls = eina_file_ls(async->ls.directory); if (!ls) { - eio_file_thread_error(&async->ls.common); + eio_file_thread_error(&async->ls.common, thread); return ; } @@ -75,7 +75,7 @@ _eio_file_direct_heavy(Ecore_Thread *thread, void *data) ls = eina_file_direct_ls(async->ls.directory); if (!ls) { - eio_file_thread_error(&async->ls.common); + eio_file_thread_error(&async->ls.common, thread); return ; } @@ -265,7 +265,7 @@ eio_file_copy_do(Ecore_Thread *thread, Eio_File_Progress *copy) in = open(copy->source, O_RDONLY); if (in < 0) { - eio_file_thread_error(©->common); + eio_file_thread_error(©->common, thread); return EINA_FALSE; } @@ -302,7 +302,7 @@ eio_file_copy_do(Ecore_Thread *thread, Eio_File_Progress *copy) return EINA_TRUE; on_error: - eio_file_thread_error(©->common); + eio_file_thread_error(©->common, thread); if (in >= 0) close(in); if (out >= 0) close(out); @@ -424,7 +424,7 @@ _eio_file_move_heavy(Ecore_Thread *thread, void *data) Eio_File_Move *move = data; if (rename(move->progress.source, move->progress.dest) < 0) - eio_file_thread_error(&move->progress.common); + eio_file_thread_error(&move->progress.common, thread); else eio_progress_send(thread, &move->progress, 1, 1); } diff --git a/legacy/eio/src/lib/eio_private.h b/legacy/eio/src/lib/eio_private.h index b8528e025c..d42fa9a67a 100644 --- a/legacy/eio/src/lib/eio_private.h +++ b/legacy/eio/src/lib/eio_private.h @@ -146,7 +146,7 @@ Eina_Bool eio_file_set(Eio_File *common, Eio_Done_Cb done_cb, Eio_Error_Cb error_cb, const void *data, - Ecore_Cb job_cb, + Ecore_Thread_Heavy_Cb job_cb, Ecore_Cb end_cb, Ecore_Cb cancel_cb); @@ -161,7 +161,7 @@ Eina_Bool eio_long_file_set(Eio_File *common, Ecore_Cb cancel_cb); void eio_file_error(Eio_File *common); -void eio_file_thread_error(Eio_File *common); +void eio_file_thread_error(Eio_File *common, Ecore_Thread *thread); Eina_File_Direct_Info *eio_direct_info_malloc(void); void eio_direct_info_free(Eina_File_Direct_Info *data); diff --git a/legacy/eio/src/lib/eio_single.c b/legacy/eio/src/lib/eio_single.c index 76fb97b129..04b468e883 100644 --- a/legacy/eio/src/lib/eio_single.c +++ b/legacy/eio/src/lib/eio_single.c @@ -29,10 +29,10 @@ eio_file_error(Eio_File *common) } void -eio_file_thread_error(Eio_File *common) +eio_file_thread_error(Eio_File *common, Ecore_Thread *thread) { common->error = errno; - ecore_thread_cancel(common->thread); + ecore_thread_cancel(thread); } Eina_Bool @@ -71,7 +71,7 @@ eio_file_set(Eio_File *common, Eio_Done_Cb done_cb, Eio_Error_Cb error_cb, const void *data, - Ecore_Cb job_cb, + Ecore_Thread_Heavy_Cb job_cb, Ecore_Cb end_cb, Ecore_Cb cancel_cb) { @@ -95,12 +95,12 @@ eio_file_set(Eio_File *common, /* --- */ static void -_eio_file_mkdir(void *data) +_eio_file_mkdir(Ecore_Thread *thread, void *data) { Eio_File_Mkdir *m = data; if (mkdir(m->path, m->mode) != 0) - eio_file_thread_error(&m->common); + eio_file_thread_error(&m->common, thread); } static void @@ -131,12 +131,12 @@ _eio_file_mkdir_error(void *data) } static void -_eio_file_unlink(void *data) +_eio_file_unlink(Ecore_Thread *thread, void *data) { Eio_File_Unlink *l = data; if (unlink(l->path) != 0) - eio_file_thread_error(&l->common); + eio_file_thread_error(&l->common, thread); } static void @@ -167,12 +167,12 @@ _eio_file_unlink_error(void *data) } static void -_eio_file_stat(void *data) +_eio_file_stat(Ecore_Thread *thread, void *data) { Eio_File_Stat *s = data; if (stat(s->path, &s->buffer) != 0) - eio_file_thread_error(&s->common); + eio_file_thread_error(&s->common, thread); } static void