On Fri, Jun 14, 2013 at 12:56 PM, Tanu Kaskinen <tanu.kaskinen at linux.intel.com> wrote: > On Thu, 2013-06-13 at 14:26 +0200, David Henningsson wrote: >> To save some CPU (in low latency scenarios), don't re-enable the >> "writable" event after it has succeeded. It is very likely the next >> write will succeed right away too. >> >> This means that we always need to handle EAGAIN/EWOULDBLOCK as a >> successful write of 0 bytes, so I also verified that all callers to >> pa_iochannel_write handled this correctly. >> >> Signed-off-by: David Henningsson <david.henningsson at canonical.com> > > Thanks, applied. > >> diff --git a/src/pulsecore/ioline.c b/src/pulsecore/ioline.c >> index a18188d..e4d2604 100644 >> --- a/src/pulsecore/ioline.c >> +++ b/src/pulsecore/ioline.c >> @@ -351,10 +351,7 @@ static int do_write(pa_ioline *l) { >> >> while (l->io && !l->dead && pa_iochannel_is_writable(l->io) && l->wbuf_valid_length > 0) { >> >> - if ((r = pa_iochannel_write(l->io, l->wbuf+l->wbuf_index, l->wbuf_valid_length)) <= 0) { >> - >> - if (r < 0 && errno == EAGAIN) >> - break; >> + if ((r = pa_iochannel_write(l->io, l->wbuf+l->wbuf_index, l->wbuf_valid_length)) < 0) { >> >> if (r < 0 && errno != EPIPE) > > r is always less than zero here, so I removed the first condition. > > -- > Tanu Totem does not play with this patch applied. GNOME Shell also suffers from hangs. Reverting it restores operation.