diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2011-06-28 16:55:41 +0000 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2011-06-28 16:55:41 +0000 |
commit | 84be4eafc5228eacfed02f78489fa82d401c2947 (patch) | |
tree | 4dab87b4691919375ab3a867a011b5caf9ce2e59 /libs/ardour/midi_track.cc | |
parent | 4388556923da8b174fdbea445ea20a8eb72189c6 (diff) |
basic infrastructure for enabling/disabling MIDI input to a given track
git-svn-id: svn://localhost/ardour2/branches/3.0@9772 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/ardour/midi_track.cc')
-rw-r--r-- | libs/ardour/midi_track.cc | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/libs/ardour/midi_track.cc b/libs/ardour/midi_track.cc index 52a0cac27e..2dcee645a9 100644 --- a/libs/ardour/midi_track.cc +++ b/libs/ardour/midi_track.cc @@ -676,3 +676,46 @@ MidiTrack::send_silence () const { return false; } + +void +MidiTrack::set_input_active (bool yn) +{ + bool changed = false; + + if (!_input) { + return; + } + + PortSet& ports (_input->ports()); + + for (PortSet::iterator p = ports.begin(DataType::MIDI); p != ports.end(DataType::MIDI); ++p) { + MidiPort* mp = dynamic_cast<MidiPort*> (&*p); + if (yn != mp->input_active()) { + mp->set_input_active (yn); + changed = true; + } + } + + if (changed) { + InputActiveChanged (); /* EMIT SIGNAL */ + } +} + +bool +MidiTrack::input_active () const +{ + if (!_input) { + cerr << " no input\n"; + return false; + } + + if (_input->ports().count().n_midi() == 0) { + cerr << "no input MIDI ports, " << _input->ports().count() << endl; + return false; + } + + PortSet::iterator p = _input->ports().begin(DataType::MIDI); + MidiPort* mp = dynamic_cast<MidiPort*> (&*p); + cerr << "first port is active: " << mp->input_active() << endl; + return mp->input_active (); +} |