diff options
author | Cedric BAIL <cedric@osg.samsung.com> | 2017-12-11 13:30:06 -0800 |
---|---|---|
committer | Cedric BAIL <cedric@osg.samsung.com> | 2017-12-11 14:04:09 -0800 |
commit | 5bc465253b363ba66c04674ec213aa6199cc9994 (patch) | |
tree | 24d20aad03c73aa50b3f64be3ff137776595a139 | |
parent | 15daf4b3e4370c124b73db5f3c2bd623bc6d3606 (diff) | |
download | efl-5bc465253b363ba66c04674ec213aa6199cc9994.tar.gz |
ecore: use Eina_Future variant for job internally to.
-rw-r--r-- | src/lib/ecore/ecore_main.c | 22 |
1 files 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 |