added locks to ladspaControl to prevent segfaults while playing
git-svn-id: https://lmms.svn.sf.net/svnroot/lmms/trunk/lmms@383 0778d3d1-df1d-0410-868b-ea421aaaa00d
This commit is contained in:
@@ -1,3 +1,12 @@
|
||||
2006-08-30 Danny McRae <khjklujn/at/users/dot/sourceforge/dot/net>
|
||||
* src/widgets/ladspa_control.cpp:
|
||||
added a lock to prevent segfaults when changing the values
|
||||
while playing
|
||||
|
||||
* src/core/ladspa_effect.cpp:
|
||||
corrected the labeling of "(ms)" which were showing up as
|
||||
"(ms))"
|
||||
|
||||
2006-08-28 Javier Serrano Polo <jasp00/at/terra/dot/es>
|
||||
|
||||
* COPYING:
|
||||
|
||||
@@ -189,20 +189,26 @@ LADSPA_Data ladspaControl::getValue( void )
|
||||
{
|
||||
LADSPA_Data value = 0.0f;
|
||||
|
||||
switch( m_port->data_type )
|
||||
if( m_processLock.tryLock() )
|
||||
{
|
||||
case TOGGLED:
|
||||
value = static_cast<LADSPA_Data>(
|
||||
m_toggle->isChecked() );
|
||||
break;
|
||||
case INTEGER:
|
||||
case FLOAT:
|
||||
case TIME:
|
||||
value = static_cast<LADSPA_Data>( m_knob->value() );
|
||||
break;
|
||||
default:
|
||||
printf( "ladspaControl::getValue BAD BAD BAD\n" );
|
||||
break;
|
||||
switch( m_port->data_type )
|
||||
{
|
||||
case TOGGLED:
|
||||
value = static_cast<LADSPA_Data>(
|
||||
m_toggle->isChecked() );
|
||||
break;
|
||||
case INTEGER:
|
||||
case FLOAT:
|
||||
case TIME:
|
||||
value = static_cast<LADSPA_Data>(
|
||||
m_knob->value() );
|
||||
break;
|
||||
default:
|
||||
printf(
|
||||
"ladspaControl::getValue BAD BAD BAD\n" );
|
||||
break;
|
||||
}
|
||||
m_processLock.unlock();
|
||||
}
|
||||
|
||||
return( value );
|
||||
@@ -213,6 +219,8 @@ LADSPA_Data ladspaControl::getValue( void )
|
||||
|
||||
void ladspaControl::setValue( LADSPA_Data _value )
|
||||
{
|
||||
m_processLock.lock();
|
||||
|
||||
switch( m_port->data_type )
|
||||
{
|
||||
case TOGGLED:
|
||||
@@ -229,6 +237,8 @@ void ladspaControl::setValue( LADSPA_Data _value )
|
||||
printf("ladspaControl::setValue BAD BAD BAD\n");
|
||||
break;
|
||||
}
|
||||
|
||||
m_processLock.unlock();
|
||||
}
|
||||
|
||||
|
||||
@@ -238,6 +248,8 @@ void FASTCALL ladspaControl::saveSettings( QDomDocument & _doc,
|
||||
QDomElement & _this,
|
||||
const QString & _name )
|
||||
{
|
||||
m_processLock.lock();
|
||||
|
||||
if( m_link != NULL )
|
||||
{
|
||||
m_link->saveSettings( _doc, _this, _name + "link" );
|
||||
@@ -256,6 +268,8 @@ void FASTCALL ladspaControl::saveSettings( QDomDocument & _doc,
|
||||
printf("ladspaControl::saveSettings BAD BAD BAD\n");
|
||||
break;
|
||||
}
|
||||
|
||||
m_processLock.unlock();
|
||||
}
|
||||
|
||||
|
||||
@@ -263,6 +277,8 @@ void FASTCALL ladspaControl::saveSettings( QDomDocument & _doc,
|
||||
void FASTCALL ladspaControl::loadSettings( const QDomElement & _this,
|
||||
const QString & _name )
|
||||
{
|
||||
m_processLock.lock();
|
||||
|
||||
if( m_link != NULL )
|
||||
{
|
||||
m_link->loadSettings( _this, _name + "link" );
|
||||
@@ -281,6 +297,8 @@ void FASTCALL ladspaControl::loadSettings( const QDomElement & _this,
|
||||
printf("ladspaControl::loadSettings BAD BAD BAD\n");
|
||||
break;
|
||||
}
|
||||
|
||||
m_processLock.unlock();
|
||||
}
|
||||
|
||||
|
||||
@@ -288,6 +306,8 @@ void FASTCALL ladspaControl::loadSettings( const QDomElement & _this,
|
||||
|
||||
void FASTCALL ladspaControl::linkControls( ladspaControl * _control )
|
||||
{
|
||||
m_processLock.lock();
|
||||
|
||||
switch( m_port->data_type )
|
||||
{
|
||||
case TOGGLED:
|
||||
@@ -301,6 +321,8 @@ void FASTCALL ladspaControl::linkControls( ladspaControl * _control )
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
m_processLock.unlock();
|
||||
}
|
||||
|
||||
|
||||
@@ -324,6 +346,8 @@ void ladspaControl::knobChange( float _value )
|
||||
|
||||
void FASTCALL ladspaControl::unlinkControls( ladspaControl * _control )
|
||||
{
|
||||
m_processLock.lock();
|
||||
|
||||
switch( m_port->data_type )
|
||||
{
|
||||
case TOGGLED:
|
||||
@@ -337,6 +361,8 @@ void FASTCALL ladspaControl::unlinkControls( ladspaControl * _control )
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
m_processLock.unlock();
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user