[pulseaudio-discuss] [PATCH] iochannel: Avoid unnecessary wakeup after successful write

Tanu Kaskinen tanu.kaskinen at linux.intel.com
Fri Jun 14 03:56:23 PDT 2013


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




More information about the pulseaudio-discuss mailing list