summaryrefslogtreecommitdiff
path: root/libs/ardour/midi_ui.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/midi_ui.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/midi_ui.cc')
-rw-r--r--libs/ardour/midi_ui.cc24
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());
}