cedric pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=5bc465253b363ba66c04674ec213aa6199cc9994
commit 5bc465253b363ba66c04674ec213aa6199cc9994 Author: Cedric BAIL <[email protected]> Date: Mon Dec 11 13:30:06 2017 -0800 ecore: use Eina_Future variant for job internally to. --- src/lib/ecore/ecore_main.c | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/src/lib/ecore/ecore_main.c b/src/lib/ecore/ecore_main.c index a1edb68150..a88357b2d5 100644 --- a/src/lib/ecore/ecore_main.c +++ b/src/lib/ecore/ecore_main.c @@ -3127,26 +3127,27 @@ _efl_loop_arguments_cleanup(Eina_Array *arga) eina_array_free(arga); } -static void -_efl_loop_arguments_send(void *data, const Efl_Event *ev EINA_UNUSED) +static Eina_Value +_efl_loop_arguments_send(void *data, const Eina_Value v, + const Eina_Future *dead EINA_UNUSED) { static Eina_Bool initialization = EINA_TRUE; Efl_Loop_Arguments arge; Eina_Array *arga = data; + if (v.type == EINA_VALUE_TYPE_ERROR) + goto on_error; + arge.argv = arga; arge.initialization = initialization; initialization = EINA_FALSE; efl_event_callback_call(ecore_main_loop_get(), EFL_LOOP_EVENT_ARGUMENTS, &arge); + on_error: _efl_loop_arguments_cleanup(arga); -} -static void -_efl_loop_arguments_cancel(void *data, const Efl_Event *ev EINA_UNUSED) -{ - _efl_loop_arguments_cleanup(data); + return v; } // It doesn't make sense to send those argument to any other mainloop @@ -3155,7 +3156,7 @@ _efl_loop_arguments_cancel(void *data, const Efl_Event *ev EINA_UNUSED) EAPI void ecore_loop_arguments_send(int argc, const char **argv) { - Efl_Future *job; + Eina_Future *job; Eina_Array *arga; int i = 0; @@ -3163,8 +3164,9 @@ ecore_loop_arguments_send(int argc, const char **argv) for (i = 0; i < argc; i++) eina_array_push(arga, eina_stringshare_add(argv[i])); - job = efl_loop_job(ecore_main_loop_get(), NULL); - efl_future_then(job, _efl_loop_arguments_send, _efl_loop_arguments_cancel, NULL, arga); + job = eina_future_then(efl_loop_Eina_FutureXXX_job(ecore_main_loop_get()), + _efl_loop_arguments_send, arga); + efl_future_Eina_FutureXXX_then(ecore_main_loop_get(), job); } // Only one main loop handle for now --
