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

Reply via email to