More controller-connection stuff
git-svn-id: https://lmms.svn.sf.net/svnroot/lmms/trunk/lmms@1024 0778d3d1-df1d-0410-868b-ea421aaaa00d
This commit is contained in:
@@ -84,10 +84,6 @@ protected:
|
||||
|
||||
static controllerConnectionVector s_connections;
|
||||
|
||||
static controller * dummyController();
|
||||
static controller * s_dummyController;
|
||||
|
||||
|
||||
signals:
|
||||
// The value changed while the mixer isn't running (i.e: MIDI CC)
|
||||
void valueChanged( void );
|
||||
|
||||
@@ -130,12 +130,24 @@ void controller::resetFrameCounter( void )
|
||||
|
||||
controller * controller::create( ControllerTypes _ct, model * _parent )
|
||||
{
|
||||
static controller * dummy = NULL;
|
||||
controller * c = NULL;
|
||||
|
||||
switch( _ct )
|
||||
{
|
||||
case LfoController: c = new lfoController( _parent ); break;
|
||||
default: break;
|
||||
case DummyController:
|
||||
if( dummy )
|
||||
c = dummy;
|
||||
else
|
||||
c = new controller( DummyController, NULL );
|
||||
break;
|
||||
|
||||
case LfoController:
|
||||
c = new lfoController( _parent );
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
return( c );
|
||||
|
||||
@@ -37,21 +37,27 @@
|
||||
|
||||
|
||||
controllerConnectionVector controllerConnection::s_connections;
|
||||
controller * controllerConnection::s_dummyController = NULL;
|
||||
|
||||
|
||||
|
||||
controllerConnection::controllerConnection( controller * _controller ) :
|
||||
m_controllerId( -1 )
|
||||
{
|
||||
setController( _controller );
|
||||
if( _controller != NULL )
|
||||
{
|
||||
setController( _controller );
|
||||
}
|
||||
else
|
||||
{
|
||||
m_controller = controller::create( controller::DummyController, NULL );
|
||||
}
|
||||
s_connections.append( this );
|
||||
}
|
||||
|
||||
|
||||
|
||||
controllerConnection::controllerConnection( int _controllerId ) :
|
||||
m_controller( dummyController() ),
|
||||
m_controller( controller::create( controller::DummyController, NULL ) ),
|
||||
m_controllerId( _controllerId )
|
||||
{
|
||||
s_connections.append( this );
|
||||
@@ -85,6 +91,13 @@ void controllerConnection::setController( controller * _controller )
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* A connection may not be finalized. This means, the connection should exist,
|
||||
* but the controller does not yet exist. This happens when loading. Even
|
||||
* loading connections last won't help, since there can be connections BETWEEN
|
||||
* controllers. So, we remember the controller-ID and use a dummyController
|
||||
* instead. Once the song is loaded, finalizeConnections() connects to the proper controllers
|
||||
*/
|
||||
void controllerConnection::finalizeConnections( void )
|
||||
{
|
||||
for( int i = 0; i < s_connections.size(); ++i )
|
||||
@@ -114,30 +127,18 @@ void controllerConnection::loadSettings( const QDomElement & _this )
|
||||
if( _this.attribute( "id" ).toInt() >= 0 )
|
||||
{
|
||||
m_controllerId = _this.attribute( "id" ).toInt();
|
||||
m_controller = dummyController();
|
||||
}
|
||||
else
|
||||
{
|
||||
qWarning( "controller index invalid\n" );
|
||||
m_controllerId = -1;
|
||||
m_controller = dummyController();
|
||||
}
|
||||
m_controller = controller::create( controller::DummyController, NULL );
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
controller * controllerConnection::dummyController()
|
||||
{
|
||||
if( s_dummyController == NULL )
|
||||
{
|
||||
s_dummyController = new controller( controller::DummyController, NULL );
|
||||
}
|
||||
return s_dummyController;
|
||||
}
|
||||
|
||||
|
||||
|
||||
QString controllerConnection::nodeName( void ) const
|
||||
{
|
||||
return( "connection" );
|
||||
|
||||
@@ -100,8 +100,6 @@ controllerConnectionDialog::controllerConnectionDialog( QWidget * _parent
|
||||
btn_layout->addStretch();
|
||||
btn_layout->addSpacing( 10 );
|
||||
btn_layout->addWidget( select_btn );
|
||||
/* btn_layout->addSpacing( 10 );
|
||||
btn_layout->addWidget( ports_btn );*/
|
||||
btn_layout->addSpacing( 10 );
|
||||
btn_layout->addWidget( cancel_btn );
|
||||
btn_layout->addSpacing( 10 );
|
||||
|
||||
Reference in New Issue
Block a user