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

-- 


Reply via email to