From e0c4d5068d849ee3b9209a0d5ebdc87f26ab547c Mon Sep 17 00:00:00 2001 From: Sebastian Sumpf Date: Sun, 29 May 2022 12:13:57 +0200 Subject: [PATCH] audio_out_session: reset changes to 'pos = tail' In case a driver is waiting for data, is should only investigate 'pos'. It should not advance the ring in any way until there is data available. issue #4609 --- repos/os/include/audio_out_session/audio_out_session.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/repos/os/include/audio_out_session/audio_out_session.h b/repos/os/include/audio_out_session/audio_out_session.h index a5f57437de..c1d00e25d1 100644 --- a/repos/os/include/audio_out_session/audio_out_session.h +++ b/repos/os/include/audio_out_session/audio_out_session.h @@ -252,8 +252,8 @@ class Audio_out::Stream { if (full()) throw Alloc_failed(); - unsigned pos = _tail; + _tail = (_tail + 1) % QUEUE_SIZE; Packet *p = get(pos); @@ -267,7 +267,7 @@ class Audio_out::Stream * * This means that allocation will start at current queue position. */ - void reset() { _tail = (_pos + 1) % QUEUE_SIZE; } + void reset() { _tail = _pos; } /**