Commit f03abce8 authored by divverent's avatar divverent Committed by Rudolf Polzer

Fix issue with noise during startup

After migrating to SDL2 interfaces there is noise during startup fix
this by initializng buffer as specification requires.

Per SDL_AudioCallback spec:
The callback must completely initialize the buffer; as of SDL 2.0, this buffer is not initialized before the callback is called. If there is nothing to play, the callback should fill the buffer with silence.
Signed-off-by: Amadeusz Sławiński's avatarAmadeusz Sławiński <[email protected]>

git-svn-id: svn://svn.icculus.org/twilight/trunk/[email protected] d7cf8633-e32d-0410-b094-e92efae38249
::stable-branch::merge=83f8124a
parent 04d56ad4
......@@ -68,10 +68,20 @@ static void Buffer_Callback (void *userdata, Uint8 *stream, int len)
PartialLength2 = FrameCount * factor - PartialLength1;
memcpy(&stream[PartialLength1], &snd_renderbuffer->ring[0], PartialLength2);
// As of SDL 2.0 buffer needs to be fully initialized, so fill leftover part with silence
// FIXME this is another place that assumes 8bit is always unsigned and others always signed
memset(&stream[PartialLength1 + PartialLength2], snd_renderbuffer->format.width == 1 ? 0x80 : 0, len - (PartialLength1 + PartialLength2));
}
else
{
memcpy(stream, &snd_renderbuffer->ring[StartOffset * factor], FrameCount * factor);
// As of SDL 2.0 buffer needs to be fully initialized, so fill leftover part with silence
// FIXME this is another place that assumes 8bit is always unsigned and others always signed
memset(&stream[FrameCount * factor], snd_renderbuffer->format.width == 1 ? 0x80 : 0, len - (FrameCount * factor));
}
snd_renderbuffer->startframe += FrameCount;
if (FrameCount < RequestedFrames && developer_insane.integer && vid_activewindow)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment