diff --git a/src/modules/module-protocol-pulse/server.c b/src/modules/module-protocol-pulse/server.c index 27bfd25c5..63b042411 100644 --- a/src/modules/module-protocol-pulse/server.c +++ b/src/modules/module-protocol-pulse/server.c @@ -188,6 +188,14 @@ static int handle_memblock(struct client *client, struct message *msg) spa_ringbuffer_write_update(&stream->ring, index); stream->requested -= SPA_MIN(msg->length, stream->requested); + if (diff < 0) { + /* when we seek backwards, ask for the additional missing data + * immediately so that we don't underrun in the next process */ + pw_log_info("client %p [%s]: backwards seek of: %" PRIi64, + client, client->name, diff); + stream_send_request(stream); + } + finish: message_free(impl, msg, false, false); return res;