Browse Source

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.
Max Trussell 3 years ago
parent
commit
60fa8ac109
1 changed files with 2 additions and 1 deletions
  1. 2 1
      Userland/Services/AudioServer/Mixer.h

+ 2 - 1
Userland/Services/AudioServer/Mixer.h

@@ -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()) {