diff --git a/include/fifo_buffer.h b/include/fifo_buffer.h index 22dbcca80..4bf908611 100644 --- a/include/fifo_buffer.h +++ b/include/fifo_buffer.h @@ -41,10 +41,6 @@ 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 ); } @@ -54,15 +50,9 @@ public: m_readerSem.release( m_size ); } - T nextWriteBuffer() - { - m_writerSem.acquire(); - T buf = m_buffer[m_writerIndex]; - return buf; - } - void write( T _element ) { + m_writerSem.acquire(); m_buffer[m_writerIndex++] = _element; m_writerIndex %= m_size; m_readerSem.release(); diff --git a/src/core/audio/AudioDevice.cpp b/src/core/audio/AudioDevice.cpp index 18ad1a668..ba38a227f 100644 --- a/src/core/audio/AudioDevice.cpp +++ b/src/core/audio/AudioDevice.cpp @@ -104,6 +104,11 @@ fpp_t AudioDevice::getNextBuffer( sampleFrameA * _ab ) // release lock unlock(); + if( getMixer()->hasFifoWriter() ) + { + CPU::freeFrames( b ); + } + return frames; } diff --git a/src/core/mixer.cpp b/src/core/mixer.cpp index 310ec289a..b82d6886f 100644 --- a/src/core/mixer.cpp +++ b/src/core/mixer.cpp @@ -1151,12 +1151,8 @@ void mixer::fifoWriter::run() const fpp_t frames = m_mixer->framesPerPeriod(); while( m_writing ) { + sampleFrameA * buffer = CPU::allocFrames( frames ); const sampleFrameA * b = m_mixer->renderNextBuffer(); - sampleFrameA * buffer = m_fifo->nextWriteBuffer(); - if( buffer == NULL ) - { - buffer = CPU::allocFrames( frames ); - } CPU::memCpy( buffer, b, frames * sizeof( sampleFrameA ) ); m_fifo->write( buffer ); }