diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2015-12-07 12:02:42 -0500 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2015-12-07 12:38:17 -0500 |
commit | 41b2de41d69c2ecc381867e502e4760267275425 (patch) | |
tree | d19b1310b19b238139ca2aab6e2592f3256a9597 /libs/ardour/midi_ui.cc | |
parent | 4bb5278b623dfb2c537d5eec0c3597f7d30eb5e0 (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/midi_ui.cc')
-rw-r--r-- | libs/ardour/midi_ui.cc | 24 |
1 files changed, 10 insertions, 14 deletions
diff --git a/libs/ardour/midi_ui.cc b/libs/ardour/midi_ui.cc index 59c718ad2b..eb6a372d86 100644 --- a/libs/ardour/midi_ui.cc +++ b/libs/ardour/midi_ui.cc @@ -71,9 +71,9 @@ MidiControlUI::do_request (MidiUIRequest* req) } bool -MidiControlUI::midi_input_handler (IOCondition ioc, AsyncMIDIPort* port) +MidiControlUI::midi_input_handler (IOCondition ioc, boost::shared_ptr<AsyncMIDIPort> port) { - DEBUG_TRACE (DEBUG::MidiIO, string_compose ("something happend on %1\n", ((ARDOUR::Port*)port)->name())); + DEBUG_TRACE (DEBUG::MidiIO, string_compose ("something happend on %1\n", boost::shared_ptr<ARDOUR::Port> (port)->name())); if (ioc & ~IO_IN) { return false; @@ -81,12 +81,8 @@ MidiControlUI::midi_input_handler (IOCondition ioc, AsyncMIDIPort* port) if (ioc & IO_IN) { - AsyncMIDIPort* asp = dynamic_cast<AsyncMIDIPort*> (port); - if (asp) { - asp->clear (); - } - - DEBUG_TRACE (DEBUG::MidiIO, string_compose ("data available on %1\n", ((ARDOUR::Port*)port)->name())); + port->clear (); + DEBUG_TRACE (DEBUG::MidiIO, string_compose ("data available on %1\n", boost::shared_ptr<ARDOUR::Port>(port)->name())); framepos_t now = _session.engine().sample_time(); port->parse (now); } @@ -102,19 +98,19 @@ MidiControlUI::clear_ports () void MidiControlUI::reset_ports () { - vector<AsyncMIDIPort*> ports; - AsyncMIDIPort* p; + vector<boost::shared_ptr<AsyncMIDIPort> > ports; + boost::shared_ptr<AsyncMIDIPort> p; - if ((p = dynamic_cast<AsyncMIDIPort*> (_session.midi_input_port()))) { + if ((p = boost::dynamic_pointer_cast<AsyncMIDIPort> (_session.midi_input_port()))) { ports.push_back (p); } - if ((p = dynamic_cast<AsyncMIDIPort*> (_session.mmc_input_port()))) { + if ((p = boost::dynamic_pointer_cast<AsyncMIDIPort> (_session.mmc_input_port()))) { ports.push_back (p); } - if ((p = dynamic_cast<AsyncMIDIPort*> (_session.scene_input_port()))) { + if ((p = boost::dynamic_pointer_cast<AsyncMIDIPort> (_session.scene_input_port()))) { ports.push_back (p); } @@ -122,7 +118,7 @@ MidiControlUI::reset_ports () return; } - for (vector<AsyncMIDIPort*>::const_iterator pi = ports.begin(); pi != ports.end(); ++pi) { + for (vector<boost::shared_ptr<AsyncMIDIPort> >::const_iterator pi = ports.begin(); pi != ports.end(); ++pi) { (*pi)->xthread().set_receive_handler (sigc::bind (sigc::mem_fun (this, &MidiControlUI::midi_input_handler), *pi)); (*pi)->xthread().attach (_main_loop->get_context()); } |