Mixer, FifoBuffer, AudioDevice: removed memory allocation/free cycles

There's really no need to allocate a buffer each period, push it to the
FifoBuffer and free it when fetching the buffer in
AudioDevice::getNextBuffer(). Instead keep the pointer in FifoBuffer's
pool and reuse it.
This commit is contained in:
Tobias Doerffel
2009-11-24 12:40:56 +01:00
parent 9cabd559dc
commit c517f1fa5a
3 changed files with 16 additions and 7 deletions

View File

@@ -41,6 +41,10 @@ public:
m_size( _size )
{
m_buffer = new T[_size];
for( int i = 0; i < m_size; ++i )
{
m_buffer[i] = NULL;
}
m_readerSem.acquire( _size );
}
@@ -50,9 +54,15 @@ public:
m_readerSem.release( m_size );
}
void write( T _element )
T nextWriteBuffer()
{
m_writerSem.acquire();
T buf = m_buffer[m_writerIndex];
return buf;
}
void write( T _element )
{
m_buffer[m_writerIndex++] = _element;
m_writerIndex %= m_size;
m_readerSem.release();