2017-09-06 16:33 GMT+09:00 Cedric Bail <[email protected]>:

> > -------- Original Message --------
> > Subject: [E-devel] Proposal: automatic Event->Promise/Future
> > Local Time: September 5, 2017 6:20 AM
> > UTC Time: September 5, 2017 1:20 PM
> > From: [email protected]
> > To: edevel <[email protected]>
> >
> > In many cases we use events as a single shot event, then we
> > efl_event_callback_add(), wait for the callback, then
> > efl_event_callback_del()...
> >
> > With the introduction of Promise/Future pair it would be nice to have
> > that automated, for example Efl.Io.Copier produces an event "done".
> > Most of the times when you"re using Efl.Io.Copier you only want to
> > know when it was finished or when it produced an error (event:
> > "error").
> >
> > Then it would improve usability to do something like:
> >
> > Eina_Future *f = efl_future_event(copier,
> > EFL_IO_COPIER_EVENT_DONE, /* success event */
> > EFL_IO_COPIER_EVENT_ERROR); /* error event */
> > eina_future_chain(f, do_something, do_something_else, on_error);
> >
> > and all would be handled for you: add/del callbacks, resolve the
> > promise and all.
>
> Just a potential idea here, why not reverse the problem. Instead of
> implementing this future on top of this events, why not have a future and
> have this events automatically create a future when someone register a
> callback on it. This avoid completely the problem of dealing with the void*
> and seems really simple to me.
>
> > This is doable, EXCEPT events are "void *" and may go away when the
> > event callback returns. However eina_promise_resolve() will postpone
> > the future chain to another mainloop iteration -- thus needs a COPY.
> > How to copy "void *"?
>
> Filling the Eina_Value_Type from the eolian type seems quite complex to
> me. It would require to give a function to do the copy and destruction of
> the structure in eolian most likely. Also I am not sure it would work in
> all case, some object that we put in the structure are really build to only
> be alive for the duration of the callback (I am thinking about input event
> here).


Yeah I was also thinking the same. Input events should be duplicated with a
specific function call because they are internally reused a lot.

-- 
Jean-Philippe André
------------------------------------------------------------------------------
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