diff --git a/legacy/ecore/src/lib/ecore/Ecore.h b/legacy/ecore/src/lib/ecore/Ecore.h index c96babd945..d39e71fb31 100644 --- a/legacy/ecore/src/lib/ecore/Ecore.h +++ b/legacy/ecore/src/lib/ecore/Ecore.h @@ -205,15 +205,15 @@ extern "C" { */ typedef Eina_Bool (*Ecore_Event_Handler_Cb) (void *data, int type, void *event); /** - * @typedef Ecore_Thread_Heavy_Cb Ecore_Thread_Heavy_Cb - * A callback used to run cpu intensive or blocking I/O operations. + * @typedef Ecore_Thread_Cb Ecore_Thread_Cb + * A callback used by Ecore_Thread helper. */ - typedef void (*Ecore_Thread_Heavy_Cb) (Ecore_Thread *thread, void *data); + typedef void (*Ecore_Thread_Cb) (void *data, Ecore_Thread *thread); /** * @typedef Ecore_Thread_Notify_Cb Ecore_Thread_Notify_Cb * A callback used by the main loop to receive data sent by an @ref Ecore_Thread_Group. */ - typedef void (*Ecore_Thread_Notify_Cb) (Ecore_Thread *thread, void *msg_data, void *data); + typedef void (*Ecore_Thread_Notify_Cb) (void *data, Ecore_Thread *thread, void *msg_data); /** * @typedef Ecore_Task_Cb Ecore_Task_Cb * A callback run for a task (timer, idler, poller, animater, etc) @@ -482,14 +482,14 @@ extern "C" { * @{ */ - EAPI Ecore_Thread *ecore_thread_run(Ecore_Thread_Heavy_Cb func_blocking, - Ecore_Cb func_end, - Ecore_Cb func_cancel, + EAPI Ecore_Thread *ecore_thread_run(Ecore_Thread_Cb func_blocking, + Ecore_Thread_Cb func_end, + Ecore_Thread_Cb func_cancel, const void *data); - EAPI Ecore_Thread *ecore_thread_feedback_run(Ecore_Thread_Heavy_Cb func_heavy, + EAPI Ecore_Thread *ecore_thread_feedback_run(Ecore_Thread_Cb func_heavy, Ecore_Thread_Notify_Cb func_notify, - Ecore_Cb func_end, - Ecore_Cb func_cancel, + Ecore_Thread_Cb func_end, + Ecore_Thread_Cb func_cancel, const void *data, Eina_Bool try_no_queue); EAPI Eina_Bool ecore_thread_cancel(Ecore_Thread *thread); diff --git a/legacy/ecore/src/lib/ecore/ecore_thread.c b/legacy/ecore/src/lib/ecore/ecore_thread.c index 6793d17790..6981c4d314 100644 --- a/legacy/ecore/src/lib/ecore/ecore_thread.c +++ b/legacy/ecore/src/lib/ecore/ecore_thread.c @@ -35,10 +35,10 @@ struct _Ecore_Pthread_Worker { union { struct { - Ecore_Thread_Heavy_Cb func_blocking; + Ecore_Thread_Cb func_blocking; } short_run; struct { - Ecore_Thread_Heavy_Cb func_heavy; + Ecore_Thread_Cb func_heavy; Ecore_Thread_Notify_Cb func_notify; Ecore_Pipe *notify; @@ -47,8 +47,8 @@ struct _Ecore_Pthread_Worker } feedback_run; } u; - Ecore_Cb func_cancel; - Ecore_Cb func_end; + Ecore_Thread_Cb func_cancel; + Ecore_Thread_Cb func_end; #ifdef EFL_HAVE_PTHREAD pthread_t self; Eina_Hash *hash; @@ -119,7 +119,7 @@ _ecore_thread_pipe_del(void *data __UNUSED__, int type __UNUSED__, void *event _ } static void -_ecore_thread_end(Ecore_Pthread_Data *pth) +_ecore_thread_end(Ecore_Pthread_Data *pth, __UNUSED__ Ecore_Thread *work) { Ecore_Pipe *p; @@ -138,12 +138,12 @@ _ecore_thread_kill(Ecore_Pthread_Worker *work) if (work->cancel) { if (work->func_cancel) - work->func_cancel((void *) work->data); + work->func_cancel((void *) work->data, (Ecore_Thread *) work); } else { if (work->func_end) - work->func_end((void *) work->data); + work->func_end((void *) work->data, (Ecore_Thread *) work); } if (work->feedback_run) @@ -188,7 +188,7 @@ _ecore_notify_handler(void *data, void *buffer, unsigned int nbyte) work->u.feedback_run.received++; if (work->u.feedback_run.func_notify) - work->u.feedback_run.func_notify((Ecore_Thread *) work, user_data, (void *) work->data); + work->u.feedback_run.func_notify((void *) work->data, (Ecore_Thread *) work, user_data); /* Force reading all notify event before killing the thread */ if (work->kill && work->u.feedback_run.send == work->u.feedback_run.received) @@ -219,7 +219,7 @@ _ecore_short_job(Ecore_Pipe *end_pipe) pthread_mutex_unlock(&_ecore_pending_job_threads_mutex); if (!work->cancel) - work->u.short_run.func_blocking((Ecore_Thread*) work, (void *) work->data); + work->u.short_run.func_blocking((void *) work->data, (Ecore_Thread*) work); ecore_pipe_write(end_pipe, &work, sizeof (Ecore_Pthread_Worker *)); } @@ -248,7 +248,7 @@ _ecore_feedback_job(Ecore_Pipe *end_pipe, pthread_t thread) work->self = thread; if (!work->cancel) - work->u.feedback_run.func_heavy((Ecore_Thread *) work, (void *) work->data); + work->u.feedback_run.func_heavy((void *) work->data, (Ecore_Thread *) work); ecore_pipe_write(end_pipe, &work, sizeof (Ecore_Pthread_Worker *)); } @@ -275,7 +275,7 @@ _ecore_direct_worker(Ecore_Pthread_Worker *work) pth->thread = pthread_self(); work->self = pth->thread; - work->u.feedback_run.func_heavy((Ecore_Thread *) work, (void *) work->data); + work->u.feedback_run.func_heavy((void *) work->data, (Ecore_Thread *) work); ecore_pipe_write(pth->p, &work, sizeof (Ecore_Pthread_Worker *)); @@ -401,14 +401,14 @@ _ecore_thread_shutdown(void) EINA_LIST_FREE(_ecore_pending_job_threads, work) { if (work->func_cancel) - work->func_cancel((void *)work->data); + work->func_cancel((void *)work->data, (Ecore_Thread *) work); free(work); } EINA_LIST_FREE(_ecore_pending_job_threads_feedback, work) { if (work->func_cancel) - work->func_cancel((void *)work->data); + work->func_cancel((void *)work->data, (Ecore_Thread *) work); free(work); } @@ -466,9 +466,9 @@ _ecore_thread_shutdown(void) * host CPU can handle. */ EAPI Ecore_Thread * -ecore_thread_run(Ecore_Thread_Heavy_Cb func_blocking, - Ecore_Cb func_end, - Ecore_Cb func_cancel, +ecore_thread_run(Ecore_Thread_Cb func_blocking, + Ecore_Thread_Cb func_end, + Ecore_Thread_Cb func_cancel, const void *data) { Ecore_Pthread_Worker *work; @@ -482,7 +482,7 @@ ecore_thread_run(Ecore_Thread_Heavy_Cb func_blocking, if (!work) { if (func_cancel) - func_cancel((void *) data); + func_cancel((void *) data, NULL); return NULL; } @@ -539,7 +539,7 @@ ecore_thread_run(Ecore_Thread_Heavy_Cb func_blocking, pthread_mutex_unlock(&_ecore_pending_job_threads_mutex); if (work->func_cancel) - work->func_cancel((void *) work->data); + work->func_cancel((void *) work->data, (Ecore_Thread *) work); free(work); work = NULL; } @@ -549,8 +549,11 @@ ecore_thread_run(Ecore_Thread_Heavy_Cb func_blocking, If no thread and as we don't want to break app that rely on this facility, we will lock the interface until we are done. */ - func_blocking((Ecore_Thread *) work, (void *)data); - func_end((void *)data); + func_blocking((void *)data, (Ecore_Thread *) work); + if (work->cancel == EINA_FALSE) func_end((void *)data, (Ecore_Thread *) work); + else func_end((void *)data, (Ecore_Thread *) work); + + free(work); return NULL; #endif @@ -608,7 +611,7 @@ ecore_thread_cancel(Ecore_Thread *thread) pthread_mutex_unlock(&_ecore_pending_job_threads_mutex); if (work->func_cancel) - work->func_cancel((void *) work->data); + work->func_cancel((void *) work->data, (Ecore_Thread *) work); free(work); return EINA_TRUE; @@ -624,7 +627,7 @@ ecore_thread_cancel(Ecore_Thread *thread) pthread_mutex_unlock(&_ecore_pending_job_threads_mutex); if (work->func_cancel) - work->func_cancel((void *) work->data); + work->func_cancel((void *) work->data, (Ecore_Thread *) work); free(work); return EINA_TRUE; @@ -688,10 +691,10 @@ ecore_thread_check(Ecore_Thread *thread) * the CPU down, so be careful with that. Of course if it can't start a new thread, it will * try to use one from the pool. */ -EAPI Ecore_Thread *ecore_thread_feedback_run(Ecore_Thread_Heavy_Cb func_heavy, +EAPI Ecore_Thread *ecore_thread_feedback_run(Ecore_Thread_Cb func_heavy, Ecore_Thread_Notify_Cb func_notify, - Ecore_Cb func_end, - Ecore_Cb func_cancel, + Ecore_Thread_Cb func_end, + Ecore_Thread_Cb func_cancel, const void *data, Eina_Bool try_no_queue) { @@ -768,7 +771,7 @@ EAPI Ecore_Thread *ecore_thread_feedback_run(Ecore_Thread_Heavy_Cb func_heavy, worker); pthread_mutex_unlock(&_ecore_pending_job_threads_mutex); - if (func_cancel) func_cancel((void *) data); + if (func_cancel) func_cancel((void *) data, NULL); if (worker) { @@ -800,10 +803,10 @@ EAPI Ecore_Thread *ecore_thread_feedback_run(Ecore_Thread_Heavy_Cb func_heavy, worker.feedback_run = EINA_TRUE; worker.kill = EINA_FALSE; - func_heavy((Ecore_Thread *) &worker, (void *)data); + func_heavy((void *)data, (Ecore_Thread *) &worker); - if (worker.func_cancel) func_cancel((void *)data); - else func_end((void *)data); + if (worker.cancel) func_cancel((void *)data, (Ecore_Thread *) &worker); + else func_end((void *)data, (Ecore_Thread *) &worker); return NULL; #endif @@ -837,7 +840,7 @@ ecore_thread_feedback(Ecore_Thread *thread, const void *data) return EINA_TRUE; #else - worker->u.feedback_run.func_notify(thread, (void*) data, (void*) worker->data); + worker->u.feedback_run.func_notify((void*) worker->data, thread, (void*) data); return EINA_TRUE; #endif diff --git a/legacy/eio/src/lib/eio_dir.c b/legacy/eio/src/lib/eio_dir.c index 288c628c5e..2d0a238bd6 100644 --- a/legacy/eio/src/lib/eio_dir.c +++ b/legacy/eio/src/lib/eio_dir.c @@ -389,7 +389,7 @@ _eio_dir_chmod(Ecore_Thread *thread, Eio_Dir_Copy *order, } static void -_eio_dir_copy_heavy(Ecore_Thread *thread, void *data) +_eio_dir_copy_heavy(void *data, Ecore_Thread *thread) { Eio_Dir_Copy *copy = data; const char *file = NULL; @@ -475,7 +475,7 @@ _eio_dir_copy_heavy(Ecore_Thread *thread, void *data) } static void -_eio_dir_copy_notify(Ecore_Thread *thread __UNUSED__, void *msg_data, void *data) +_eio_dir_copy_notify(void *data, Ecore_Thread *thread __UNUSED__, void *msg_data) { Eio_Dir_Copy *copy = data; Eio_Progress *progress = msg_data; @@ -492,7 +492,7 @@ _eio_dir_copy_free(Eio_Dir_Copy *copy) } static void -_eio_dir_copy_end(void *data) +_eio_dir_copy_end(void *data, Ecore_Thread *thread __UNUSED__) { Eio_Dir_Copy *copy = data; @@ -502,7 +502,7 @@ _eio_dir_copy_end(void *data) } static void -_eio_dir_copy_error(void *data) +_eio_dir_copy_error(void *data, Ecore_Thread *thread __UNUSED__) { Eio_Dir_Copy *copy = data; @@ -512,7 +512,7 @@ _eio_dir_copy_error(void *data) } static void -_eio_dir_move_heavy(Ecore_Thread *thread, void *data) +_eio_dir_move_heavy(void *data, Ecore_Thread *thread) { Eio_Dir_Copy *move = data; const char *file = NULL; @@ -622,7 +622,7 @@ _eio_dir_move_heavy(Ecore_Thread *thread, void *data) } static void -_eio_dir_rmrf_heavy(Ecore_Thread *thread, void *data) +_eio_dir_rmrf_heavy(void *data, Ecore_Thread *thread) { Eio_Dir_Copy *rmrf = data; const char *file = NULL; diff --git a/legacy/eio/src/lib/eio_file.c b/legacy/eio/src/lib/eio_file.c index d00d536ed0..d1f02ba626 100644 --- a/legacy/eio/src/lib/eio_file.c +++ b/legacy/eio/src/lib/eio_file.c @@ -114,7 +114,7 @@ */ static void -_eio_file_heavy(Ecore_Thread *thread, void *data) +_eio_file_heavy(void *data, Ecore_Thread *thread) { Eio_File_Char_Ls *async = data; Eina_Iterator *ls; @@ -147,7 +147,7 @@ _eio_file_heavy(Ecore_Thread *thread, void *data) } static void -_eio_file_notify(Ecore_Thread *thread __UNUSED__, void *msg_data, void *data) +_eio_file_notify(void *data, Ecore_Thread *thread __UNUSED__, void *msg_data) { Eio_File_Char_Ls *async = data; const char *file = msg_data; @@ -197,7 +197,7 @@ _eio_file_eina_ls_heavy(Ecore_Thread *thread, Eio_File_Direct_Ls *async, Eina_It } static void -_eio_file_direct_heavy(Ecore_Thread *thread, void *data) +_eio_file_direct_heavy(void *data, Ecore_Thread *thread) { Eio_File_Direct_Ls *async = data; Eina_Iterator *ls; @@ -208,7 +208,7 @@ _eio_file_direct_heavy(Ecore_Thread *thread, void *data) } static void -_eio_file_stat_heavy(Ecore_Thread *thread, void *data) +_eio_file_stat_heavy(void *data, Ecore_Thread *thread) { Eio_File_Direct_Ls *async = data; Eina_Iterator *ls; @@ -219,7 +219,7 @@ _eio_file_stat_heavy(Ecore_Thread *thread, void *data) } static void -_eio_file_direct_notify(Ecore_Thread *thread __UNUSED__, void *msg_data, void *data) +_eio_file_direct_notify(void *data, Ecore_Thread *thread __UNUSED__, void *msg_data) { Eio_File_Direct_Ls *async = data; Eina_File_Direct_Info *info = msg_data; @@ -230,7 +230,7 @@ _eio_file_direct_notify(Ecore_Thread *thread __UNUSED__, void *msg_data, void *d } static void -_eio_file_end(void *data) +_eio_file_end(void *data, Ecore_Thread *thread __UNUSED__) { Eio_File_Ls *async = data; @@ -241,7 +241,7 @@ _eio_file_end(void *data) } static void -_eio_file_error(void *data) +_eio_file_error(void *data, Ecore_Thread *thread __UNUSED__) { Eio_File_Ls *async = data; @@ -356,7 +356,7 @@ _eio_file_copy_splice(Ecore_Thread *thread, Eio_File_Progress *op, int in, int o #endif static void -_eio_file_copy_heavy(Ecore_Thread *thread, void *data) +_eio_file_copy_heavy(void *data, Ecore_Thread *thread) { Eio_File_Progress *copy = data; @@ -364,7 +364,7 @@ _eio_file_copy_heavy(Ecore_Thread *thread, void *data) } static void -_eio_file_copy_notify(Ecore_Thread *thread __UNUSED__, void *msg_data, void *data) +_eio_file_copy_notify(void *data, Ecore_Thread *thread __UNUSED__, void *msg_data) { Eio_File_Progress *copy = data; @@ -380,7 +380,7 @@ _eio_file_copy_free(Eio_File_Progress *copy) } static void -_eio_file_copy_end(void *data) +_eio_file_copy_end(void *data, Ecore_Thread *thread __UNUSED__) { Eio_File_Progress *copy = data; @@ -390,7 +390,7 @@ _eio_file_copy_end(void *data) } static void -_eio_file_copy_error(void *data) +_eio_file_copy_error(void *data, Ecore_Thread *thread __UNUSED__) { Eio_File_Progress *copy = data; @@ -463,7 +463,7 @@ _eio_file_move_copy_error(void *data, int error) } static void -_eio_file_move_heavy(Ecore_Thread *thread, void *data) +_eio_file_move_heavy(void *data, Ecore_Thread *thread) { Eio_File_Move *move = data; @@ -474,7 +474,7 @@ _eio_file_move_heavy(Ecore_Thread *thread, void *data) } static void -_eio_file_move_notify(Ecore_Thread *thread __UNUSED__, void *msg_data, void *data) +_eio_file_move_notify(void *data, Ecore_Thread *thread __UNUSED__, void *msg_data) { Eio_File_Move *move = data; @@ -482,7 +482,7 @@ _eio_file_move_notify(Ecore_Thread *thread __UNUSED__, void *msg_data, void *dat } static void -_eio_file_move_end(void *data) +_eio_file_move_end(void *data, Ecore_Thread *thread __UNUSED__) { Eio_File_Move *move = data; @@ -492,7 +492,7 @@ _eio_file_move_end(void *data) } static void -_eio_file_move_error(void *data) +_eio_file_move_error(void *data, Ecore_Thread *thread __UNUSED__) { Eio_File_Move *move = data; diff --git a/legacy/eio/src/lib/eio_private.h b/legacy/eio/src/lib/eio_private.h index 038a4a2f0c..3d0b8fac9e 100644 --- a/legacy/eio/src/lib/eio_private.h +++ b/legacy/eio/src/lib/eio_private.h @@ -166,19 +166,19 @@ Eina_Bool eio_file_set(Eio_File *common, Eio_Done_Cb done_cb, Eio_Error_Cb error_cb, const void *data, - Ecore_Thread_Heavy_Cb job_cb, - Ecore_Cb end_cb, - Ecore_Cb cancel_cb); + Ecore_Thread_Cb job_cb, + Ecore_Thread_Cb end_cb, + Ecore_Thread_Cb cancel_cb); /* Be aware that ecore_thread_run could call cancel_cb if something goes wrong. */ Eina_Bool eio_long_file_set(Eio_File *common, Eio_Done_Cb done_cb, Eio_Error_Cb error_cb, const void *data, - Ecore_Thread_Heavy_Cb heavy_cb, + Ecore_Thread_Cb heavy_cb, Ecore_Thread_Notify_Cb notify_cb, - Ecore_Cb end_cb, - Ecore_Cb cancel_cb); + Ecore_Thread_Cb end_cb, + Ecore_Thread_Cb cancel_cb); void eio_file_error(Eio_File *common); void eio_file_thread_error(Eio_File *common, Ecore_Thread *thread); diff --git a/legacy/eio/src/lib/eio_single.c b/legacy/eio/src/lib/eio_single.c index 3404361782..a39091ece0 100644 --- a/legacy/eio/src/lib/eio_single.c +++ b/legacy/eio/src/lib/eio_single.c @@ -30,7 +30,7 @@ */ static void -_eio_file_mkdir(Ecore_Thread *thread, void *data) +_eio_file_mkdir(void *data, Ecore_Thread *thread) { Eio_File_Mkdir *m = data; @@ -46,7 +46,7 @@ _eio_mkdir_free(Eio_File_Mkdir *m) } static void -_eio_file_mkdir_done(void *data) +_eio_file_mkdir_done(void *data, Ecore_Thread *thread __UNUSED__) { Eio_File_Mkdir *m = data; @@ -57,7 +57,7 @@ _eio_file_mkdir_done(void *data) } static void -_eio_file_mkdir_error(void *data) +_eio_file_mkdir_error(void *data, Ecore_Thread *thread __UNUSED__) { Eio_File_Mkdir *m = data; @@ -66,7 +66,7 @@ _eio_file_mkdir_error(void *data) } static void -_eio_file_unlink(Ecore_Thread *thread, void *data) +_eio_file_unlink(void *data, Ecore_Thread *thread) { Eio_File_Unlink *l = data; @@ -82,7 +82,7 @@ _eio_unlink_free(Eio_File_Unlink *l) } static void -_eio_file_unlink_done(void *data) +_eio_file_unlink_done(void *data, Ecore_Thread *thread __UNUSED__) { Eio_File_Unlink *l = data; @@ -93,7 +93,7 @@ _eio_file_unlink_done(void *data) } static void -_eio_file_unlink_error(void *data) +_eio_file_unlink_error(void *data, Ecore_Thread *thread __UNUSED__) { Eio_File_Unlink *l = data; @@ -102,7 +102,7 @@ _eio_file_unlink_error(void *data) } static void -_eio_file_stat(Ecore_Thread *thread, void *data) +_eio_file_stat(void *data, Ecore_Thread *thread) { Eio_File_Stat *s = data; @@ -118,7 +118,7 @@ _eio_stat_free(Eio_File_Stat *s) } static void -_eio_file_stat_done(void *data) +_eio_file_stat_done(void *data, Ecore_Thread *thread __UNUSED__) { Eio_File_Stat *s = data; @@ -129,7 +129,7 @@ _eio_file_stat_done(void *data) } static void -_eio_file_stat_error(void *data) +_eio_file_stat_error(void *data, Ecore_Thread *thread __UNUSED__) { Eio_File_Stat *s = data; @@ -138,7 +138,7 @@ _eio_file_stat_error(void *data) } static void -_eio_file_chmod(Ecore_Thread *thread, void *data) +_eio_file_chmod(void *data, Ecore_Thread *thread) { Eio_File_Chmod *ch = data; @@ -147,7 +147,7 @@ _eio_file_chmod(Ecore_Thread *thread, void *data) } static void -_eio_file_chown(Ecore_Thread *thread, void *data) +_eio_file_chown(void *data, Ecore_Thread *thread) { Eio_File_Chown *own = data; char *tmp; @@ -213,7 +213,7 @@ _eio_chown_free(Eio_File_Chown *ch) } static void -_eio_file_chown_done(void *data) +_eio_file_chown_done(void *data, Ecore_Thread *thread __UNUSED__) { Eio_File_Chown *ch = data; @@ -224,7 +224,7 @@ _eio_file_chown_done(void *data) } static void -_eio_file_chown_error(void *data) +_eio_file_chown_error(void *data, Ecore_Thread *thread __UNUSED__) { Eio_File_Chown *ch = data; @@ -263,10 +263,10 @@ eio_long_file_set(Eio_File *common, Eio_Done_Cb done_cb, Eio_Error_Cb error_cb, const void *data, - Ecore_Thread_Heavy_Cb heavy_cb, + Ecore_Thread_Cb heavy_cb, Ecore_Thread_Notify_Cb notify_cb, - Ecore_Cb end_cb, - Ecore_Cb cancel_cb) + Ecore_Thread_Cb end_cb, + Ecore_Thread_Cb cancel_cb) { Ecore_Thread *thread; @@ -276,7 +276,7 @@ eio_long_file_set(Eio_File *common, common->error = 0; common->thread = NULL; - /* Be aware that ecore_thread_run could call cancel_cb if something goes wrong. + /* Be aware that ecore_thread_feedback_run could call cancel_cb if something goes wrong. This means that common would be destroyed if thread == NULL. */ thread = ecore_thread_feedback_run(heavy_cb, @@ -294,9 +294,9 @@ eio_file_set(Eio_File *common, Eio_Done_Cb done_cb, Eio_Error_Cb error_cb, const void *data, - Ecore_Thread_Heavy_Cb job_cb, - Ecore_Cb end_cb, - Ecore_Cb cancel_cb) + Ecore_Thread_Cb job_cb, + Ecore_Thread_Cb end_cb, + Ecore_Thread_Cb cancel_cb) { Ecore_Thread *thread;