- clear_ports ();
-
- MIDI::Manager::PortList plist = MIDI::Manager::instance()->get_midi_ports ();
-
- for (MIDI::Manager::PortList::iterator i = plist.begin(); i != plist.end(); ++i) {
- int fd;
+ if (!port_sources.empty()) {
+ return;
+ }
+
+ vector<AsyncMIDIPort*> ports;
+ AsyncMIDIPort* p;
+
+ if ((p = dynamic_cast<AsyncMIDIPort*> (_session.midi_input_port()))) {
+ ports.push_back (p);
+ }
+
+
+ if ((p = dynamic_cast<AsyncMIDIPort*> (_session.mmc_input_port()))) {
+ ports.push_back (p);
+ }
+
+ if (ports.empty()) {
+ return;
+ }
+
+ int fd;
+ for (vector<AsyncMIDIPort*>::const_iterator pi = ports.begin(); pi != ports.end(); ++pi) {