From: Peter W. <pet...@we...> - 2008-11-03 13:13:48
|
Gustavo Sverzut Barbieri schrieb: > On Mon, Nov 3, 2008 at 3:42 AM, Enlightenment SVN > <no-...@en...> wrote: > >> Log: >> add patch to add a pipe handler for glueing threads to the core main loop via >> pipes - makes it save for a thread to send a message to the main loop and not >> need lots of thread locks etc. >> > > ok, this code have some minor problems, I should have looked at it > before, maybe I can fix it during my flight tomorrow, but: > - read/write need to catch errors, be them EINTR and EAGAIN since fd > is marked non-blocking. For EAGAIN we could either just retry or we > must keep size and "todo" in Ecore_Pipe as well as an allocated buffer > of required size, just dispatch when everything is read. (same for > write). > As Sachiel said, raster took the wrong patch. I'll commit the other one this evening. I don't claim that that one is perfect, but it does some error checking. > - for consistency, we should have handler() to return an int and > return that int in _ecore_pipe_read(). > And what should we do if the handler returns ECORE_CALLBACK_CANCEL? Should we only cancel the callback or also del (free) the whole pipe? > - example contais code that does not even compile, I spotted at > least "ecore_pipe_write(pipe, arg0);" but that function takes 3 > parameters, last one must be sizeof(void *) since you're writing the > pointer, but possible more stuff is missing. > Yes, I changed the examples in the other patch, too. |