On Thu, 27 Oct 2016 09:05:37 -0700 Cedric BAIL <[email protected]> said:

> On Oct 26, 2016 6:19 PM, "Gustavo Sverzut Barbieri" <[email protected]>
> wrote:
> >
> > barbieri pushed a commit to branch master.
> >
> >
> http://git.enlightenment.org/core/efl.git/commit/?id=574e4b8ad56b0cced409417f76e90205fb28fe22
> >
> > commit 574e4b8ad56b0cced409417f76e90205fb28fe22
> > Author: Gustavo Sverzut Barbieri <[email protected]>
> > Date:   Wed Oct 26 23:17:10 2016 -0200
> >
> >     efl_io_copier: work around efl_future weirdness.
> >
> >     The pointer given to efl_future_use() should be NULL-ified before
> >     calling my function, since that pointer has no meaning anymore.
> >
> >     The copier relied on pd->job being NULL to avoid useless rescheduling,
> >     it was being reached with non-null, but that pointer is no longer
> >     useful.
> >
> >     Moreover, I'm not sure if the second pointer, with the new future
> >     won't be modified to NULL when the efl_future continues :-(
> 
> Yes, this is a problem I am well aware off.due to the use of eo for future,
> weak ref are nulled only after the future is destroyed. But the real
> correct behavior is to have it nulled as soon as it is fulfilled before
> even calling any callback, because weak ref are to be used by cancel only.
> They shouldn't exist when cancel can't be called anymore. I intend to fix
> this when I move future away from eo.

futures should not be moved away from eo. futures are what you cancel and this
discussion is going to go in a circle. because to cancel them you need a handle
to keep around... they MUST be eo. for safety. for reffing. etc.

> > ---
> >  src/lib/ecore/efl_io_copier.c | 2 ++
> >  1 file changed, 2 insertions(+)
> >
> > diff --git a/src/lib/ecore/efl_io_copier.c b/src/lib/ecore/efl_io_copier.c
> > index ab5314a..0b2667c 100644
> > --- a/src/lib/ecore/efl_io_copier.c
> > +++ b/src/lib/ecore/efl_io_copier.c
> > @@ -98,6 +98,8 @@ _efl_io_copier_job(void *data, const Efl_Event *ev
> EINA_UNUSED)
> >     uint64_t old_total = pd->progress.total;
> >
> >     _COPIER_DBG(o, pd);
> > +   pd->job = NULL; /* XXX TODO this should be NULL-ified by efl_promise
> before calling this function */
> > +
> >     efl_ref(o);
> >
> >     if (pd->source && efl_io_reader_can_read_get(pd->source))
> >
> > --
> >
> >
> ------------------------------------------------------------------------------
> The Command Line: Reinvented for Modern Developers
> Did the resurgence of CLI tooling catch you by surprise?
> Reconnect with the command line and become more productive. 
> Learn the new .NET and ASP.NET CLI. Get your free copy!
> http://sdm.link/telerik
> _______________________________________________
> enlightenment-devel mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
> 


-- 
------------- Codito, ergo sum - "I code, therefore I am" --------------
The Rasterman (Carsten Haitzler)    [email protected]


------------------------------------------------------------------------------
The Command Line: Reinvented for Modern Developers
Did the resurgence of CLI tooling catch you by surprise?
Reconnect with the command line and become more productive. 
Learn the new .NET and ASP.NET CLI. Get your free copy!
http://sdm.link/telerik
_______________________________________________
enlightenment-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel

Reply via email to