Merge pull request #1305 from diizy/stable-1.1

Improvement of FxMixer multithreading
This commit is contained in:
Vesa V
2014-11-16 15:08:10 +02:00
3 changed files with 80 additions and 59 deletions

View File

@@ -57,6 +57,7 @@ class FxChannel : public ThreadableJob
QMutex m_lock;
int m_channelIndex; // what channel index are we
bool m_queued; // are we queued up for rendering yet?
bool m_muted; // are we muted? updated per period so we don't have to call m_muteModel.value() twice
// pointers to other channels that this one sends to
FxRouteVector m_sends;
@@ -65,7 +66,11 @@ class FxChannel : public ThreadableJob
FxRouteVector m_receives;
virtual bool requiresProcessing() const { return true; }
QAtomicInt m_dependenciesMet;
void incrementDeps();
void processed();
private:
virtual void doProcessing( sampleFrame * _working_buffer );
};
@@ -189,8 +194,6 @@ private:
void allocateChannelsTo(int num);
QMutex m_sendsMutex;
void addChannelLeaf( FxChannel * ch, sampleFrame * buf );
friend class MixerWorkerThread;
friend class FxMixerView;

View File

@@ -61,6 +61,11 @@ public:
{
m_state = Queued;
}
inline void done()
{
m_state = Done;
}
void process( sampleFrame* workingBuffer = NULL )
{