1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-26 00:17:46 +00:00

AudioServer/Mixer: Fix remaining samples underflow

The `m_remaining_samples` attribute was underflowing at the end of an
audio stream. This fix guards against the underflow by only decrementing
the attribute when it is greater than zero.

I found this bug because the SoundPlayer userland application was not
correctly detecting when an audio stream was completed. This was
happening because the remaining samples being returned from the client
audio connection was an underflowed 16 bit integer instead of zero.
This commit is contained in:
Max Trussell 2021-12-19 19:00:00 -08:00 committed by Brian Gianforcaro
parent c8eab80b3d
commit 60fa8ac109

View file

@ -52,7 +52,8 @@ public:
return false;
sample = m_current->samples()[m_position++];
--m_remaining_samples;
if (m_remaining_samples > 0)
--m_remaining_samples;
++m_played_samples;
if (m_position >= m_current->sample_count()) {