Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
61 changes: 29 additions & 32 deletions include/fifo_buffer.h → include/FifoBuffer.h
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* fifo_buffer.h - FIFO fixed-size buffer
* FifoBuffer.h - FIFO fixed-size buffer
*
* Copyright (c) 2007 Javier Serrano Polo <jasp00/at/users.sourceforge.net>
*
Expand Down Expand Up @@ -29,66 +29,63 @@


template<typename T>
class fifoBuffer
class FifoBuffer
{
public:
fifoBuffer( int _size ) :
m_reader_sem( _size ),
m_writer_sem( _size ),
m_reader_index( 0 ),
m_writer_index( 0 ),
m_size( _size )
FifoBuffer(int size) :
m_readSem(size),
m_writeSem(size),
m_readIndex(0),
m_writeIndex(0),
m_size(size)
{
m_buffer = new T[_size];
m_reader_sem.acquire( _size );
m_buffer = new T[size];
m_readSem.acquire(size);
}

~fifoBuffer()
~FifoBuffer()
{
delete[] m_buffer;
m_reader_sem.release( m_size );
m_readSem.release(m_size);
}

void write( T _element )
void write(T element)
{
m_writer_sem.acquire();
m_buffer[m_writer_index++] = _element;
m_writer_index %= m_size;
m_reader_sem.release();
m_writeSem.acquire();
m_buffer[m_writeIndex++] = element;
m_writeIndex %= m_size;
m_readSem.release();
}

T read()
{
m_reader_sem.acquire();
T element = m_buffer[m_reader_index++];
m_reader_index %= m_size;
m_writer_sem.release();
return( element );
m_readSem.acquire();
T element = m_buffer[m_readIndex++];
m_readIndex %= m_size;
m_writeSem.release();
return element;
}

void waitUntilRead()
{
m_writer_sem.acquire( m_size );
m_writer_sem.release( m_size );
m_writeSem.acquire(m_size);
m_writeSem.release(m_size);
}

bool available()
{
return( m_reader_sem.available() );
return m_readSem.available();
}


private:
QSemaphore m_reader_sem;
QSemaphore m_writer_sem;
int m_reader_index;
int m_writer_index;
QSemaphore m_readSem;
QSemaphore m_writeSem;
int m_readIndex;
int m_writeIndex;
int m_size;
T * m_buffer;

} ;




#endif
10 changes: 5 additions & 5 deletions include/Mixer.h
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@
#include "lmms_basics.h"
#include "LocklessList.h"
#include "Note.h"
#include "fifo_buffer.h"
#include "FifoBuffer.h"
#include "MixerProfiler.h"


Expand Down Expand Up @@ -328,19 +328,19 @@ class LMMS_EXPORT Mixer : public QObject


private:
typedef fifoBuffer<surroundSampleFrame *> fifo;
typedef FifoBuffer<surroundSampleFrame *> Fifo;

class fifoWriter : public QThread
{
public:
fifoWriter(Mixer * mixer, fifo * _fifo);
fifoWriter( Mixer * mixer, Fifo * fifo );

void finish();


private:
Mixer * m_mixer;
fifo * m_fifo;
Fifo * m_fifo;
volatile bool m_writing;

void run() override;
Expand Down Expand Up @@ -416,7 +416,7 @@ class LMMS_EXPORT Mixer : public QObject
QString m_midiClientName;

// FIFO stuff
fifo * m_fifo;
Fifo * m_fifo;
fifoWriter * m_fifoWriter;

MixerProfiler m_profiler;
Expand Down
2 changes: 1 addition & 1 deletion include/Song.h
Original file line number Diff line number Diff line change
Expand Up @@ -338,7 +338,7 @@ class LMMS_EXPORT Song : public TrackContainer

void exportProjectMidi(QString const & exportFileName) const;

inline void setLoadOnLauch(bool value) { m_loadOnLaunch = value; }
inline void setLoadOnLaunch(bool value) { m_loadOnLaunch = value; }
SaveOptions &getSaveOptions() {
return m_saveOptions;
}
Expand Down
6 changes: 3 additions & 3 deletions src/core/Mixer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -131,7 +131,7 @@ Mixer::Mixer( bool renderOnly ) :
}

// allocte the FIFO from the determined size
m_fifo = new fifo( fifoSize );
m_fifo = new Fifo( fifoSize );

// now that framesPerPeriod is fixed initialize global BufferManager
BufferManager::init( m_framesPerPeriod );
Expand Down Expand Up @@ -1222,9 +1222,9 @@ MidiClient * Mixer::tryMidiClients()



Mixer::fifoWriter::fifoWriter( Mixer* mixer, fifo * _fifo ) :
Mixer::fifoWriter::fifoWriter( Mixer* mixer, Fifo * fifo ) :
m_mixer( mixer ),
m_fifo( _fifo ),
m_fifo( fifo ),
m_writing( true )
{
setObjectName("Mixer::fifoWriter");
Expand Down
2 changes: 1 addition & 1 deletion src/gui/MainWindow.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1646,7 +1646,7 @@ void MainWindow::onImportProject()
ImportFilter::import( ofd.selectedFiles()[0], song );
}

song->setLoadOnLauch(false);
song->setLoadOnLaunch(false);
}
}

Expand Down