diff --git a/src/modules/module-protocol-pulse/pulse-server.c b/src/modules/module-protocol-pulse/pulse-server.c index b6a3f1e0e..9769f5364 100644 --- a/src/modules/module-protocol-pulse/pulse-server.c +++ b/src/modules/module-protocol-pulse/pulse-server.c @@ -1550,6 +1550,10 @@ static void stream_process(void *data) size = SPA_MIN(buf->datas[0].maxsize, minreq); memset(p, 0, size); + /* skip the remainder, avail can be negative and thus + * we can skip a lot here. */ + size = (int32_t)minreq - avail; + if (stream->draining) { stream->draining = false; pw_stream_flush(stream->stream, true);