فهرست منبع

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 سال پیش
والد
کامیت
60fa8ac109
1فایلهای تغییر یافته به همراه2 افزوده شده و 1 حذف شده
  1. 2 1
      Userland/Services/AudioServer/Mixer.h

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

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