summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCedric BAIL <cedric@osg.samsung.com>2017-12-11 13:30:06 -0800
committerCedric BAIL <cedric@osg.samsung.com>2017-12-11 14:04:09 -0800
commit5bc465253b363ba66c04674ec213aa6199cc9994 (patch)
tree24d20aad03c73aa50b3f64be3ff137776595a139
parent15daf4b3e4370c124b73db5f3c2bd623bc6d3606 (diff)
downloadefl-5bc465253b363ba66c04674ec213aa6199cc9994.tar.gz
ecore: use Eina_Future variant for job internally to.
-rw-r--r--src/lib/ecore/ecore_main.c22
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