summaryrefslogtreecommitdiff
path: root/libs/ardour/midiport_manager.cc
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2015-12-07 12:02:42 -0500
committerPaul Davis <paul@linuxaudiosystems.com>2015-12-07 12:38:17 -0500
commit41b2de41d69c2ecc381867e502e4760267275425 (patch)
treed19b1310b19b238139ca2aab6e2592f3256a9597 /libs/ardour/midiport_manager.cc
parent4bb5278b623dfb2c537d5eec0c3597f7d30eb5e0 (diff)
change API for accessing session MIDI ports so that (1) boost::shared_ptr<> is used all the time (2) we avoid using multiple functions to return different subclass versions of some ports
Diffstat (limited to 'libs/ardour/midiport_manager.cc')
-rw-r--r--libs/ardour/midiport_manager.cc41
1 files changed, 12 insertions, 29 deletions
diff --git a/libs/ardour/midiport_manager.cc b/libs/ardour/midiport_manager.cc
index 5460df3824..7f3f05a7db 100644
--- a/libs/ardour/midiport_manager.cc
+++ b/libs/ardour/midiport_manager.cc
@@ -83,23 +83,6 @@ MidiPortManager::create_ports ()
_scene_in = AudioEngine::instance()->register_input_port (DataType::MIDI, X_("Scene in"), true);
_scene_out = AudioEngine::instance()->register_output_port (DataType::MIDI, X_("Scene out"), true);
- /* XXX nasty type conversion needed because of the mixed inheritance
- * required to integrate MIDI::IPMidiPort and ARDOUR::AsyncMIDIPort.
- *
- * At some point, we'll move IPMidiPort into Ardour and make it
- * inherit from ARDOUR::MidiPort not MIDI::Port, and then this
- * mess can go away
- */
-
- _midi_input_port = boost::dynamic_pointer_cast<AsyncMIDIPort>(_midi_in).get();
- _midi_output_port = boost::dynamic_pointer_cast<AsyncMIDIPort>(_midi_out).get();
-
- _mmc_input_port = boost::dynamic_pointer_cast<AsyncMIDIPort>(_mmc_in).get();
- _mmc_output_port = boost::dynamic_pointer_cast<AsyncMIDIPort>(_mmc_out).get();
-
- _scene_input_port = boost::dynamic_pointer_cast<AsyncMIDIPort>(_scene_in).get();
- _scene_output_port = boost::dynamic_pointer_cast<AsyncMIDIPort>(_scene_out).get();
-
/* Now register ports used for sync (MTC and MIDI Clock)
*/
@@ -137,12 +120,12 @@ MidiPortManager::set_midi_port_states (const XMLNodeList&nodes)
ports.insert (make_pair (_mtc_output_port->name(), _mtc_output_port));
ports.insert (make_pair (_midi_clock_input_port->name(), _midi_clock_input_port));
ports.insert (make_pair (_midi_clock_output_port->name(), _midi_clock_output_port));
- ports.insert (make_pair (_midi_input_port->name(), _midi_in));
- ports.insert (make_pair (_midi_output_port->name(), _midi_out));
- ports.insert (make_pair (_mmc_input_port->name(), _mmc_in));
- ports.insert (make_pair (_mmc_output_port->name(), _mmc_out));
- ports.insert (make_pair (_scene_output_port->name(), _scene_out));
- ports.insert (make_pair (_scene_input_port->name(), _scene_in));
+ ports.insert (make_pair (_midi_in->name(), _midi_in));
+ ports.insert (make_pair (_midi_out->name(), _midi_out));
+ ports.insert (make_pair (_mmc_in->name(), _mmc_in));
+ ports.insert (make_pair (_mmc_out->name(), _mmc_out));
+ ports.insert (make_pair (_scene_out->name(), _scene_out));
+ ports.insert (make_pair (_scene_in->name(), _scene_in));
for (XMLNodeList::const_iterator n = nodes.begin(); n != nodes.end(); ++n) {
if ((prop = (*n)->property (X_("name"))) == 0) {
@@ -169,12 +152,12 @@ MidiPortManager::get_midi_port_states () const
ports.insert (make_pair (_mtc_output_port->name(), _mtc_output_port));
ports.insert (make_pair (_midi_clock_input_port->name(), _midi_clock_input_port));
ports.insert (make_pair (_midi_clock_output_port->name(), _midi_clock_output_port));
- ports.insert (make_pair (_midi_input_port->name(), _midi_in));
- ports.insert (make_pair (_midi_output_port->name(), _midi_out));
- ports.insert (make_pair (_mmc_input_port->name(), _mmc_in));
- ports.insert (make_pair (_mmc_output_port->name(), _mmc_out));
- ports.insert (make_pair (_scene_output_port->name(), _scene_out));
- ports.insert (make_pair (_scene_input_port->name(), _scene_in));
+ ports.insert (make_pair (_midi_in->name(), _midi_in));
+ ports.insert (make_pair (_midi_out->name(), _midi_out));
+ ports.insert (make_pair (_mmc_in->name(), _mmc_in));
+ ports.insert (make_pair (_mmc_out->name(), _mmc_out));
+ ports.insert (make_pair (_scene_out->name(), _scene_out));
+ ports.insert (make_pair (_scene_in->name(), _scene_in));
for (PortMap::const_iterator p = ports.begin(); p != ports.end(); ++p) {
s.push_back (&p->second->get_state());