-Fixed issue with double-register of Controller instances

main
Harry van Haaren 2013-10-02 03:05:10 +01:00
parent c719aafdfe
commit f349e36a7f
5 changed files with 26 additions and 4 deletions

View File

@ -10,7 +10,6 @@ extern Jack* jack;
Controller::Controller()
{
jack->getControllerUpdater()->registerController( this );
}
void Controller::reset(){};

View File

@ -325,7 +325,7 @@ void GenericMIDI::midi(unsigned char* midi)
int data = midi[1];
float value = midi[2] / 127.f;
//LUPPP_NOTE("called %i %i %f", status, data, value );
LUPPP_NOTE("GenericMIDI::midi() %i %i %f", status, data, value );
// iterate over bindings, execute binding action if matches
for(unsigned int i = 0; i < midiToAction.size(); i++)
@ -373,8 +373,8 @@ void GenericMIDI::launchScene( int scene )
data[0] = 144;
data[1] = 82 + scene;
data[2] = 127;
//jack->midiObserverWriteMIDI( _port, &data[0] );
LUPPP_NOTE("this = %i GenericMIDI::launchScene()", this );
writeMidi( data );
}

View File

@ -216,7 +216,7 @@ Looper* Jack::getLooper(int t)
void Jack::registerMidiObserver( MidiObserver* mo )
{
LUPPP_NOTE("%s","Jack::registerMidiObserver()" );
LUPPP_NOTE("Jack::registerMidiObserver()" );
midiObservers.push_back( mo );
}

View File

@ -15,6 +15,27 @@ MidiObserver::MidiObserver() :
}
void MidiObserver::writeMidi( unsigned char* data )
{
void* portBuffer = jack_port_get_buffer( jackInputPort, jack->getBuffersize() );
unsigned char* buffer = jack_midi_event_reserve( portBuffer, 0, 3);
if( buffer == 0 )
{
std::cout << "Error: APC writeMidi() write buffer == 0" << std::endl;
return;
}
else
{
cout << "JC::writeMidi() " << int(data[0]) << ", " << int(data[1]) << ", " << int(data[2]) << endl;
//memcpy( buffer, data, sizeof(unsigned char)*3 );
buffer[0] = data[0];
buffer[1] = data[1];
buffer[2] = data[2];
}
}
void MidiObserver::registerMidiPorts(std::string name)
{
// register the JACK MIDI ports

View File

@ -32,6 +32,8 @@ class MidiObserver
void registerMidiPorts(std::string name);
virtual void midi(unsigned char* data){};
void writeMidi( unsigned char* data );
private:
// there are jack_port_t* registered ports