fixed missing tempoSyncKnobModel for not crashing when instantiating LADSPA-plugins with time-knobs inside

git-svn-id: https://lmms.svn.sf.net/svnroot/lmms/trunk/lmms@748 0778d3d1-df1d-0410-868b-ea421aaaa00d
This commit is contained in:
Tobias Doerffel
2008-03-01 23:43:39 +00:00
parent 5010db8164
commit 1c5c20a8b2
2 changed files with 45 additions and 12 deletions

View File

@@ -38,6 +38,7 @@
#include "automatable_model.h"
#include "knob.h"
#include "tempo_sync_knob.h"
class track;
@@ -71,6 +72,11 @@ public:
return( &m_knobModel );
}
inline knobModel * getTempoSyncKnobModel( void )
{
return( &m_knobModel );
}
inline port_desc_t * getPort( void )
{
return( m_port );
@@ -94,6 +100,7 @@ signals:
protected slots:
void ledChanged( void );
void knobChanged( void );
void tempoKnobChanged( void );
void linkStateChanged( void );
@@ -104,6 +111,7 @@ private:
boolModel m_linkEnabledModel;
boolModel m_toggledModel;
knobModel m_knobModel;
tempoSyncKnobModel m_tempoSyncKnobModel;
friend class ladspaControlView;

View File

@@ -35,7 +35,8 @@ ladspaControl::ladspaControl( model * _parent, port_desc_t * _port,
m_port( _port ),
m_linkEnabledModel( _link, this ),
m_toggledModel( FALSE, this ),
m_knobModel( 0, 0, 0, 1, this )
m_knobModel( 0, 0, 0, 1, this ),
m_tempoSyncKnobModel( 0, 0, 0, 1, 1.0, this )
{
if( m_link )
{
@@ -82,13 +83,13 @@ ladspaControl::ladspaControl( model * _parent, port_desc_t * _port,
break;
case TIME:
m_knobModel.setTrack( _track );
m_knobModel.setRange( m_port->min, m_port->max,
m_tempoSyncKnobModel.setTrack( _track );
m_tempoSyncKnobModel.setRange( m_port->min, m_port->max,
( m_port->max -
m_port->min ) / 400.0f );
m_knobModel.setInitValue( m_port->def );
connect( &m_knobModel, SIGNAL( dataChanged() ),
this, SLOT( knobChanged() ) );
m_tempoSyncKnobModel.setInitValue( m_port->def );
connect( &m_tempoSyncKnobModel, SIGNAL( dataChanged() ),
this, SLOT( tempoKnobChanged() ) );
break;
default:
@@ -118,10 +119,12 @@ LADSPA_Data ladspaControl::getValue( void )
break;
case INTEGER:
case FLOAT:
case TIME:
value = static_cast<LADSPA_Data>(
m_knobModel.value() );
break;
case TIME:
value = static_cast<LADSPA_Data>(
m_tempoSyncKnobModel.value() );
default:
printf( "ladspaControl::getValue BAD BAD BAD\n" );
break;
@@ -144,9 +147,12 @@ void ladspaControl::setValue( LADSPA_Data _value )
m_knobModel.setValue( static_cast<int>( _value ) );
break;
case FLOAT:
case TIME:
m_knobModel.setValue( static_cast<float>( _value ) );
break;
case TIME:
m_tempoSyncKnobModel.setValue( static_cast<float>(
_value ) );
break;
default:
printf("ladspaControl::setValue BAD BAD BAD\n");
break;
@@ -171,9 +177,11 @@ void FASTCALL ladspaControl::saveSettings( QDomDocument & _doc,
break;
case INTEGER:
case FLOAT:
case TIME:
m_knobModel.saveSettings( _doc, _this, _name );
break;
case TIME:
m_tempoSyncKnobModel.saveSettings( _doc, _this, _name );
break;
default:
printf("ladspaControl::saveSettings BAD BAD BAD\n");
break;
@@ -196,9 +204,11 @@ void FASTCALL ladspaControl::loadSettings( const QDomElement & _this,
break;
case INTEGER:
case FLOAT:
case TIME:
m_knobModel.loadSettings( _this, _name );
break;
case TIME:
m_tempoSyncKnobModel.loadSettings( _this, _name );
break;
default:
printf("ladspaControl::loadSettings BAD BAD BAD\n");
break;
@@ -218,10 +228,13 @@ void FASTCALL ladspaControl::linkControls( ladspaControl * _control )
break;
case INTEGER:
case FLOAT:
case TIME:
knobModel::linkModels( &m_knobModel,
_control->getKnobModel() );
break;
case TIME:
tempoSyncKnobModel::linkModels( &m_tempoSyncKnobModel,
_control->getTempoSyncKnobModel() );
break;
default:
break;
}
@@ -248,6 +261,15 @@ void ladspaControl::knobChanged( void )
void ladspaControl::tempoKnobChanged( void )
{
emit( changed( m_port->port_id, static_cast<LADSPA_Data>(
m_tempoSyncKnobModel.value() ) ) );
}
void FASTCALL ladspaControl::unlinkControls( ladspaControl * _control )
{
switch( m_port->data_type )
@@ -258,10 +280,13 @@ void FASTCALL ladspaControl::unlinkControls( ladspaControl * _control )
break;
case INTEGER:
case FLOAT:
case TIME:
knobModel::unlinkModels( &m_knobModel,
_control->getKnobModel() );
break;
case TIME:
tempoSyncKnobModel::unlinkModels( &m_tempoSyncKnobModel,
_control->getTempoSyncKnobModel() );
break;
default:
break;
}