ecore: use Eina_Future variant for job internally to.

This commit is contained in:
Cedric BAIL 2017-12-11 13:30:06 -08:00
parent 15daf4b3e4
commit 5bc465253b
1 changed files with 12 additions and 10 deletions

View File

@ -3127,26 +3127,27 @@ _efl_loop_arguments_cleanup(Eina_Array *arga)
eina_array_free(arga); eina_array_free(arga);
} }
static void static Eina_Value
_efl_loop_arguments_send(void *data, const Efl_Event *ev EINA_UNUSED) _efl_loop_arguments_send(void *data, const Eina_Value v,
const Eina_Future *dead EINA_UNUSED)
{ {
static Eina_Bool initialization = EINA_TRUE; static Eina_Bool initialization = EINA_TRUE;
Efl_Loop_Arguments arge; Efl_Loop_Arguments arge;
Eina_Array *arga = data; Eina_Array *arga = data;
if (v.type == EINA_VALUE_TYPE_ERROR)
goto on_error;
arge.argv = arga; arge.argv = arga;
arge.initialization = initialization; arge.initialization = initialization;
initialization = EINA_FALSE; initialization = EINA_FALSE;
efl_event_callback_call(ecore_main_loop_get(), EFL_LOOP_EVENT_ARGUMENTS, &arge); efl_event_callback_call(ecore_main_loop_get(), EFL_LOOP_EVENT_ARGUMENTS, &arge);
on_error:
_efl_loop_arguments_cleanup(arga); _efl_loop_arguments_cleanup(arga);
}
static void return v;
_efl_loop_arguments_cancel(void *data, const Efl_Event *ev EINA_UNUSED)
{
_efl_loop_arguments_cleanup(data);
} }
// It doesn't make sense to send those argument to any other mainloop // 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 EAPI void
ecore_loop_arguments_send(int argc, const char **argv) ecore_loop_arguments_send(int argc, const char **argv)
{ {
Efl_Future *job; Eina_Future *job;
Eina_Array *arga; Eina_Array *arga;
int i = 0; int i = 0;
@ -3163,8 +3164,9 @@ ecore_loop_arguments_send(int argc, const char **argv)
for (i = 0; i < argc; i++) for (i = 0; i < argc; i++)
eina_array_push(arga, eina_stringshare_add(argv[i])); eina_array_push(arga, eina_stringshare_add(argv[i]));
job = efl_loop_job(ecore_main_loop_get(), NULL); job = eina_future_then(efl_loop_Eina_FutureXXX_job(ecore_main_loop_get()),
efl_future_then(job, _efl_loop_arguments_send, _efl_loop_arguments_cancel, NULL, arga); _efl_loop_arguments_send, arga);
efl_future_Eina_FutureXXX_then(ecore_main_loop_get(), job);
} }
// Only one main loop handle for now // Only one main loop handle for now