pulse-server: don't underrun when draining

This commit is contained in:
Wim Taymans 2020-10-31 15:22:32 +01:00
parent 3960a88478
commit 98b1b8090d

View file

@ -1276,13 +1276,15 @@ static void stream_process(void *data)
int32_t avail = spa_ringbuffer_get_read_index(&stream->ring, &pd.read_index); int32_t avail = spa_ringbuffer_get_read_index(&stream->ring, &pd.read_index);
if (avail <= 0) { if (avail <= 0) {
/* underrun */ /* underrun */
if (stream->drain_tag)
pw_stream_flush(stream->stream, true);
size = buf->datas[0].maxsize; size = buf->datas[0].maxsize;
memset(p, 0, size); memset(p, 0, size);
if (stream->drain_tag)
pw_stream_flush(stream->stream, true);
else {
pd.underrun_for = size; pd.underrun_for = size;
pd.underrun = true; pd.underrun = true;
}
} else if (avail > MAXLENGTH) { } else if (avail > MAXLENGTH) {
/* overrun, handled by other side */ /* overrun, handled by other side */
pw_log_warn(NAME" %p: overrun", stream); pw_log_warn(NAME" %p: overrun", stream);