summaryrefslogtreecommitdiff
path: root/gtk2_ardour/port_group.cc
diff options
context:
space:
mode:
Diffstat (limited to 'gtk2_ardour/port_group.cc')
-rw-r--r--gtk2_ardour/port_group.cc30
1 files changed, 10 insertions, 20 deletions
diff --git a/gtk2_ardour/port_group.cc b/gtk2_ardour/port_group.cc
index 531a5cf2c4..5b4f151da8 100644
--- a/gtk2_ardour/port_group.cc
+++ b/gtk2_ardour/port_group.cc
@@ -499,20 +499,12 @@ PortGroupList::gather (ARDOUR::Session* session, ARDOUR::DataType type, bool inp
string lpnc = lpn;
lpnc += ':';
- const char ** ports = 0;
- if (type == DataType::NIL) {
- ports = session->engine().get_ports ("", "", inputs ? JackPortIsInput : JackPortIsOutput);
- } else {
- ports = session->engine().get_ports ("", type.to_jack_type(), inputs ? JackPortIsInput : JackPortIsOutput);
- }
-
- if (ports) {
+ vector<string> ports;
+ if (AudioEngine::instance()->get_ports ("", type, inputs ? IsInput : IsOutput, ports) > 0) {
- int n = 0;
+ for (vector<string>::const_iterator s = ports.begin(); s != ports.end(); ) {
- while (ports[n]) {
-
- std::string const p = ports[n];
+ std::string const p = *s;
if (!system->has_port(p) &&
!bus->has_port(p) &&
@@ -526,7 +518,7 @@ PortGroupList::gather (ARDOUR::Session* session, ARDOUR::DataType type, bool inp
*/
if (p.find ("Midi-Through") != string::npos) {
- ++n;
+ ++s;
continue;
}
@@ -539,15 +531,15 @@ PortGroupList::gather (ARDOUR::Session* session, ARDOUR::DataType type, bool inp
if ((lp.find (N_(":monitor")) != string::npos) &&
(lp.find (lpn) != string::npos)) {
- ++n;
+ ++s;
continue;
}
/* can't use the audio engine for this as we are looking at non-Ardour ports */
- jack_port_t* jp = jack_port_by_name (session->engine().jack(), p.c_str());
- if (jp) {
- DataType t (jack_port_type (jp));
+ PortEngine::PortHandle ph = AudioEngine::instance()->port_engine().get_port_by_name (p);
+ if (ph) {
+ DataType t (AudioEngine::instance()->port_engine().port_data_type (ph));
if (t != DataType::NIL) {
if (port_has_prefix (p, N_("system:")) ||
port_has_prefix (p, N_("alsa_pcm")) ||
@@ -560,10 +552,8 @@ PortGroupList::gather (ARDOUR::Session* session, ARDOUR::DataType type, bool inp
}
}
- ++n;
+ ++s;
}
-
- free (ports);
}
for (DataType::iterator i = DataType::begin(); i != DataType::end(); ++i) {