From aaac15126b8fd4d691d46c52496d57269d3facdf Mon Sep 17 00:00:00 2001 From: Cedric BAIL Date: Tue, 30 Aug 2016 16:30:52 -0700 Subject: [PATCH] ecore: add efl_future_iterator_race. --- src/lib/ecore/Ecore_Eo.h | 1 + src/lib/ecore/efl_promise.c | 15 +++++++++++++++ 2 files changed, 16 insertions(+) diff --git a/src/lib/ecore/Ecore_Eo.h b/src/lib/ecore/Ecore_Eo.h index 62c419234d..fc46941fac 100644 --- a/src/lib/ecore/Ecore_Eo.h +++ b/src/lib/ecore/Ecore_Eo.h @@ -86,6 +86,7 @@ struct _Efl_Future_Race_Success }; EAPI Efl_Future *efl_future_race_internal(Efl_Future *f1, ...); +EAPI Efl_Future *efl_future_iterator_race(Eina_Iterator *it); #define efl_future_race(...) efl_future_race_internal(__VA_ARGS__, NULL) diff --git a/src/lib/ecore/efl_promise.c b/src/lib/ecore/efl_promise.c index 72dfddec8a..8592c00d9f 100644 --- a/src/lib/ecore/efl_promise.c +++ b/src/lib/ecore/efl_promise.c @@ -1154,7 +1154,22 @@ efl_future_race_internal(Efl_Future *f1, ...) eina_array_push(&race->members, fn); } + return _efl_future_race_done(race); +} +EAPI Efl_Future * +efl_future_iterator_race(Eina_Iterator *it) +{ + Efl_Promise_Race *race = NULL; + Efl_Future *fn; + + if (!it) return NULL; + + EINA_ITERATOR_FOREACH(it, fn) + { + if (!race) race = _efl_future_race_new(fn); + if (race) eina_array_push(&race->members, fn); + } return _efl_future_race_done(race); }