fixed more segfaults

git-svn-id: https://lmms.svn.sf.net/svnroot/lmms/trunk/lmms@496 0778d3d1-df1d-0410-868b-ea421aaaa00d
This commit is contained in:
Tobias Doerffel
2007-07-21 10:40:51 +00:00
parent 11bcc5927f
commit 6b89322a7c
9 changed files with 177 additions and 80 deletions

View File

@@ -50,12 +50,12 @@
#endif
#include "journalling_object.h"
#include "rack_view.h"
class audioPort;
class groupBox;
class instrumentTrack;
class rackView;
class sampleTrack;
class track;
@@ -80,23 +80,32 @@ public:
void setupWidget( void );
inline void deleteAllEffects( void )
{
m_rack->deleteAllPlugins();
}
signals:
void closed( void );
private slots:
void addEffect( void );
void setBypass( bool _state );
protected:
virtual void closeEvent( QCloseEvent * _ce );
private:
track * m_track;
audioPort * m_port;
groupBox * m_effectsGroupBox;
QPushButton * m_addButton;
rackView * m_rack;
} ;

View File

@@ -137,6 +137,7 @@ public:
inline void removeAudioPort( audioPort * _port )
{
lock();
vvector<audioPort *>::iterator it = qFind( m_audioPorts.begin(),
m_audioPorts.end(),
_port );
@@ -144,6 +145,7 @@ public:
{
m_audioPorts.erase( it );
}
unlock();
}
@@ -164,7 +166,9 @@ public:
{
if( criticalXRuns() == FALSE )
{
lockPlayHandles();
m_playHandles.push_back( _ph );
unlockPlayHandles();
return( TRUE );
}
delete _ph;
@@ -173,7 +177,9 @@ public:
inline void removePlayHandle( const playHandle * _ph )
{
lockPlayHandlesToRemove();
m_playHandlesToRemove.push_back( _ph );
unlockPlayHandlesToRemove();
}
inline playHandleVector & playHandles( void )
@@ -246,14 +252,33 @@ public:
// methods needed by other threads to alter knob values, waveforms, etc
void lock( void )
{
m_mixMutex.lock();
m_globalMutex.lock();
}
void unlock( void )
{
m_mixMutex.unlock();
m_globalMutex.unlock();
}
void lockPlayHandles( void )
{
m_playHandlesMutex.lock();
}
void unlockPlayHandles( void )
{
m_playHandlesMutex.unlock();
}
void lockPlayHandlesToRemove( void )
{
m_playHandlesToRemoveMutex.lock();
}
void unlockPlayHandlesToRemove( void )
{
m_playHandlesToRemoveMutex.unlock();
}
// audio-buffer-mgm
void FASTCALL bufferToPort( const sampleFrame * _buf,
@@ -365,7 +390,9 @@ private:
QString m_midiClientName;
QMutex m_mixMutex;
QMutex m_globalMutex;
QMutex m_playHandlesMutex;
QMutex m_playHandlesToRemoveMutex;
fifo * m_fifo;

View File

@@ -72,14 +72,19 @@ public:
return( "rack" );
}
void deleteAllPlugins( void );
public slots:
void moveUp( rackPlugin * _plugin );
void moveDown( rackPlugin * _plugin );
void deletePlugin( rackPlugin * _plugin );
private:
void redraw();
vvector<rackPlugin *> m_rackInserts;
QVBoxLayout * m_mainLayout;