* e, eio: fix ecore_thread_run breakage.

SVN revision: 53371
This commit is contained in:
Cedric BAIL 2010-10-13 17:46:02 +00:00
parent 25e84c7f3d
commit f3b720812e
4 changed files with 34 additions and 22 deletions

View File

@ -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(&copy->progress.common);
eio_file_thread_error(&copy->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(&copy->progress.common);
eio_file_thread_error(&copy->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(&copy->progress.common, thread);
goto on_error;
}
if (mkdir(copy->progress.dest, buffer.st_mode) != 0)
goto on_error;
{
eio_file_thread_error(&copy->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(&copy->progress.common, thread);
goto on_error;
}
/* create the directory */
if (mkdir(target, buffer.st_mode) != 0)
goto on_error;
{
eio_file_thread_error(&copy->progress.common, thread);
goto on_error;
}
step++;
eio_progress_send(thread, &copy->progress, step, count);

View File

@ -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(&copy->common);
eio_file_thread_error(&copy->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(&copy->common);
eio_file_thread_error(&copy->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);
}

View File

@ -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);

View File

@ -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