diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2011-08-13 16:27:29 +0000 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2011-08-13 16:27:29 +0000 |
commit | f75bbfd8ac52ea33692c3ee15953ceb2994117ab (patch) | |
tree | 13ec2167fc76ccbb1464ff81b6854234b6716b2e /libs/surfaces/generic_midi/midifunction.cc | |
parent | 77f3fa0943e4b99d3575dfb34e0ef09f3eb4ead7 (diff) |
track changes to config parameters for MMC device id's correctly (from roy vegard)
git-svn-id: svn://localhost/ardour2/branches/3.0@9985 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/surfaces/generic_midi/midifunction.cc')
-rw-r--r-- | libs/surfaces/generic_midi/midifunction.cc | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/libs/surfaces/generic_midi/midifunction.cc b/libs/surfaces/generic_midi/midifunction.cc index 757c1aeffe..186858550f 100644 --- a/libs/surfaces/generic_midi/midifunction.cc +++ b/libs/surfaces/generic_midi/midifunction.cc @@ -35,10 +35,12 @@ MIDIFunction::~MIDIFunction () } int -MIDIFunction::init (GenericMidiControlProtocol& ui, const std::string& invokable_name, MIDI::byte* msg_data, size_t data_sz) +MIDIFunction::setup (GenericMidiControlProtocol& ui, const std::string& invokable_name, const std::string& arg, MIDI::byte* msg_data, size_t data_sz) { MIDIInvokable::init (ui, invokable_name, msg_data, data_sz); + _argument = arg; + if (strcasecmp (_invokable_name.c_str(), "transport-stop") == 0) { _function = TransportStop; } else if (strcasecmp (_invokable_name.c_str(), "transport-roll") == 0) { @@ -59,6 +61,11 @@ MIDIFunction::init (GenericMidiControlProtocol& ui, const std::string& invokable _function = NextBank; } else if (strcasecmp (_invokable_name.c_str(), "prev-bank") == 0) { _function = PrevBank; + } else if (strcasecmp (_invokable_name.c_str(), "select") == 0) { + if (_argument.empty()) { + return -1; + } + _function = Select; } else { return -1; } @@ -109,6 +116,13 @@ MIDIFunction::execute () case TransportRecordDisable: _ui->set_record_enable (false); break; + + case Select: + if (!_argument.empty()) { + uint32_t rid; + sscanf (_argument.c_str(), "%d", &rid); + _ui->SelectByRID (rid); + } } } |