浏览代码

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