Fix deadlock & use QWrite/ReadLockers instead of manually managing locks

This commit is contained in:
Colin Wallace
2015-07-03 02:20:12 +00:00
parent a98534ac46
commit d805302f06
2 changed files with 14 additions and 31 deletions

View File

@@ -29,6 +29,7 @@
#include <QtCore/QReadWriteLock>
#include <QtCore/QObject>
#include <QtCore/QRect>
#include <QtCore/QWriteLocker>
#include <samplerate.h>
@@ -151,26 +152,23 @@ public:
void setLoopStartFrame( f_cnt_t _start )
{
m_varLock.lockForWrite();
QWriteLocker writeLocker(&m_varLock);
m_loopStartFrame = _start;
m_varLock.unlock();
}
void setLoopEndFrame( f_cnt_t _end )
{
m_varLock.lockForWrite();
QWriteLocker writeLocker(&m_varLock);
m_loopEndFrame = _end;
m_varLock.unlock();
}
void setAllPointFrames( f_cnt_t _start, f_cnt_t _end, f_cnt_t _loopstart, f_cnt_t _loopend )
{
m_varLock.lockForWrite();
QWriteLocker writeLocker(&m_varLock);
m_startFrame = _start;
m_endFrame = _end;
m_loopStartFrame = _loopstart;
m_loopEndFrame = _loopend;
m_varLock.unlock();
}
inline f_cnt_t frames() const
@@ -205,16 +203,14 @@ public:
inline void setFrequency( float _freq )
{
m_varLock.lockForWrite();
QWriteLocker writeLocker(&m_varLock);
m_frequency = _freq;
m_varLock.unlock();
}
inline void setSampleRate( sample_rate_t _rate )
{
m_varLock.lockForWrite();
QWriteLocker writeLocker(&m_varLock);
m_sampleRate = _rate;
m_varLock.unlock();
}
inline const sampleFrame * data() const