start playing and prebuffer in the mixing thread

This commit is contained in:
Glenn Maynard
2006-12-06 06:19:57 +00:00
parent 01458632f8
commit 75a95323be
@@ -25,6 +25,19 @@ void RageSound_DSound_Software::MixerThread()
if( !SetThreadPriority(GetCurrentThread(), THREAD_PRIORITY_ABOVE_NORMAL) )
LOG->Warn(werr_ssprintf(GetLastError(), "Failed to set sound thread priority"));
/* Fill a buffer before we start playing, so we don't play whatever junk is
* in the buffer. */
char *locked_buf;
unsigned len;
while( m_pPCM->get_output_buf(&locked_buf, &len, chunksize()) )
{
memset( locked_buf, 0, len );
m_pPCM->release_output_buf(locked_buf, len);
}
/* Start playing. */
m_pPCM->Play();
while( !m_bShutdownMixerThread )
{
char *pLockedBuf;
@@ -88,21 +101,8 @@ RString RageSound_DSound_Software::Init()
LOG->Info( "Software mixing at %i hz", m_iSampleRate );
/* Fill a buffer before we start playing, so we don't play whatever junk is
* in the buffer. */
char *locked_buf;
unsigned len;
while( m_pPCM->get_output_buf(&locked_buf, &len, chunksize()) )
{
memset( locked_buf, 0, len );
m_pPCM->release_output_buf(locked_buf, len);
}
StartDecodeThread();
/* Start playing. */
m_pPCM->Play();
m_MixingThread.SetName("Mixer thread");
m_MixingThread.Create( MixerThread_start, this );