Hi, Apologies for the future/promise gaff - I was working from the documentation of the previous efl_loop_promise_new which also referred to Future. I will correct both.
I am confused by the loop semantics. Many times I have been told that our UI work must happen on the main thread, which indicates that such a helper would be handy. Is this requirement changing? Thanks, Andrew On Thu, 4 Jan 2018 at 13:10 Gustavo Sverzut Barbieri <[email protected]> wrote: > On Thu, Jan 4, 2018 at 9:56 AM, Andy Williams <[email protected]> > wrote: > > ajwillia-ms pushed a commit to branch master. > > > > > http://git.enlightenment.org/core/efl.git/commit/?id=e931fd698d26b8bec0e34239d2f79c059b339a51 > > > > commit e931fd698d26b8bec0e34239d2f79c059b339a51 > > Author: Andy Williams <[email protected]> > > Date: Thu Jan 4 11:56:01 2018 +0000 > > > > promise: Add even simpler helper for main loop promise creation > > --- > > src/lib/ecore/Ecore_Eo.h | 12 ++++++++++++ > > src/lib/ecore/efl_loop.c | 10 ++++++++++ > > 2 files changed, 22 insertions(+) > > > > diff --git a/src/lib/ecore/Ecore_Eo.h b/src/lib/ecore/Ecore_Eo.h > > index fa5d08d798..4c6783cd5f 100644 > > --- a/src/lib/ecore/Ecore_Eo.h > > +++ b/src/lib/ecore/Ecore_Eo.h > > @@ -83,6 +83,18 @@ EAPI Eina_Future_Scheduler > *efl_loop_future_scheduler_get(const Eo *obj); > > */ > > EAPI Eina_Promise *efl_loop_promise_new(const Eo *obj, > Eina_Promise_Cancel_Cb cancel_cb, const void *data); > > > > +/** > > + * @brief Create a future attached to the main loop > > watch out the terms... they are confusing, I always mix them up... and > so you did ;-) > > s/future/promise/ > > promise is the "write side" of the pipe... you send the value to it > (resolve/reject) and then it will propagate to the read side in a > chain of futures. > > > > + * @param cancel_cb A callback used to inform that the promise was > canceled. Use > > + * this callback to @c free @p data. @p cancel_cb must not be @c NULL ! > > + * @param data Data to @p cancel_cb. > > + * @return A promise or @c NULL on error. > > + * > > + * @see eina_promise_new() > > + */ > > +EAPI Eina_Promise *efl_loop_main_promise_new(Eina_Promise_Cancel_Cb > cancel_cb, const void *data); > ... > > +EAPI Eina_Promise * > > +efl_loop_main_promise_new(Eina_Promise_Cancel_Cb cancel_cb, const void > *data) > > +{ > > + Efl_Loop *main; > > + > > + main = efl_loop_main_get(EFL_LOOP_CLASS); > > however this shouldn't exist, really. > > as I wrote in my previous long-long-email, creating PROMISES is not > common. Basically internal EFL code is doing that, like > timeout/job/idle promises that are returned as FUTURE... then the user > will chain on those futures... no need to create and return a new > promise. There is no need for helping it that much. > > that said, providing a helper to do it for the "main" loop is wrong, > because people should be careful to stick with the existing main loop > they are bound to and never-EVER assume there is a single main loop > and they are running from it. > > for the time being, things will work, after all we have a single > loop... but once we make it really possible to have multiple loops, > then things start to misbehave and it will be super-hard to fix... > since things won't crash, they won't fail to compile... they will just > be dispatched "elsewhere" and eventually this is freaking hard to > identify. > > a good quality check for EFL would be to identify code as > "efl_loop_main_get()" or others that assume a main loop instead of > propagating using loop/loop-user... and mark as a bug. > > > -- > Gustavo Sverzut Barbieri > -------------------------------------- > Mobile: +55 (16) 99354-9890 <+55%2016%2099354-9890> > > > ------------------------------------------------------------------------------ > Check out the vibrant tech community on one of the world's most > engaging tech sites, Slashdot.org! http://sdm.link/slashdot > _______________________________________________ > enlightenment-devel mailing list > [email protected] > https://lists.sourceforge.net/lists/listinfo/enlightenment-devel > -- http://andywilliams.me http://ajwillia.ms ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot _______________________________________________ enlightenment-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
