fix in Linux audio interface

This commit is contained in:
Volker Fischer 2009-02-16 20:11:35 +00:00
parent 347befce8d
commit 1c77e542aa

View file

@ -212,7 +212,7 @@ bool CSound::Write ( CVector<short>& psData )
} }
else if ( ret == -EAGAIN ) else if ( ret == -EAGAIN )
{ {
if ( ( ret = snd_pcm_wait ( phandle, 1 ) ) < 0 ) if ( ( ret = snd_pcm_wait ( phandle, 1000 ) ) < 0 )
{ {
qDebug ( "poll failed (%s)", snd_strerror ( ret ) ); qDebug ( "poll failed (%s)", snd_strerror ( ret ) );
break; break;
@ -247,9 +247,12 @@ bool CSound::Write ( CVector<short>& psData )
break; // skip one period break; // skip one period
} }
if ( ret > 0 )
{
size -= ret; size -= ret;
start += ret; start += ret;
} }
}
return false; return false;
} }
@ -356,7 +359,8 @@ bool CSound::SetHWParams ( snd_pcm_t* handle, const int iBufferSizeIn,
// check period and buffer size // check period and buffer size
snd_pcm_uframes_t buffer_size; snd_pcm_uframes_t buffer_size;
if ( err = snd_pcm_hw_params_get_buffer_size(hwparams, &buffer_size ) < 0 ) { if ( err = snd_pcm_hw_params_get_buffer_size(hwparams, &buffer_size ) < 0 )
{
qDebug ( "Unable to get buffer size for playback: %s\n", snd_strerror ( err ) ); qDebug ( "Unable to get buffer size for playback: %s\n", snd_strerror ( err ) );
} }
qDebug ( "buffer size: %d (desired: %d)", (int) buffer_size, iBufferSizeIn * iNumPeriodBlocks ); qDebug ( "buffer size: %d (desired: %d)", (int) buffer_size, iBufferSizeIn * iNumPeriodBlocks );