On Wed, 19.09.07 23:34, Nicolas Peyron (peyronn at free.fr) wrote: > > Le mercredi 12 septembre 2007, Lennart Poettering a ?crit?: > > On Wed, 05.09.07 14:55, Nicolas Peyron (peyronn at free.fr) wrote: > > > Le mercredi 5 septembre 2007, Nicolas Peyron a ?crit?: > > > > Anyways the code is here http://lyio/git/QtPulseAudio/ if you want to > > > > take a look. > > > > > > It's http://lyio.org/git/QtPulseAudio.git/ > > > > Hmm, is there a gitweb available anywher? I am a lazy bastard ... ;-) > > Here it's https://lyio.org/gitweb/?p=QtPulseAudio.git;a=summary :) A few comments: Are you sure you need three seperate "SocketNotifiers" in the IOEvent class? Can't you OR them together? On POSIX POLLHUP, POLLERR, POLLNVAL are ignored when you write them to pollfd->events. They are only valid in ->revents. Thus I wonder about the validity of the third notifier you are using. (Hmm, and did I mention that the QT event loop sucks big time? BTW: couldn't you just be using the glib event loop? I heard that internally Qt uses the glib mainloop these days anyway?) The implementation of IOEvent::onException() is not correct, because the event object might have been destructed from the callback. Hence the second callback might be called for an event that is no longer valid. pa_usec_t is unsigned. The comparison < 0 is thus unlikely to succeed ever in TimeEvent::restart(). Use something like pa_timeval_cmp(pa_gettimeofday(&now), tv) < 0. Also, passing NULL as tv is supposed to deactivate the time event. Passing a time that already passed (including {0, 0}) should cause the event to be dispatched in the next event loop iteration. (a little bit like the defer event) Otherwise this looks pretty good to me. Does the event loop abstraction work properly? Lennart -- Lennart Poettering Red Hat, Inc. lennart [at] poettering [dot] net ICQ# 11060553 http://0pointer.net/lennart/ GnuPG 0x1A015CC4