summaryrefslogtreecommitdiff
path: root/libs/ardour
diff options
context:
space:
mode:
Diffstat (limited to 'libs/ardour')
-rw-r--r--libs/ardour/ardour/audioengine.h1
-rw-r--r--libs/ardour/ardour/port_engine.h2
-rw-r--r--libs/ardour/ardour/port_manager.h4
-rw-r--r--libs/ardour/audioengine.cc10
-rw-r--r--libs/ardour/bundle.cc2
-rw-r--r--libs/ardour/jack_portengine.cc14
-rw-r--r--libs/ardour/port_manager.cc18
7 files changed, 46 insertions, 5 deletions
diff --git a/libs/ardour/ardour/audioengine.h b/libs/ardour/ardour/audioengine.h
index 4ac9221238..db1f59d19f 100644
--- a/libs/ardour/ardour/audioengine.h
+++ b/libs/ardour/ardour/audioengine.h
@@ -105,6 +105,7 @@ public:
bool get_sync_offset (pframes_t& offset) const;
int create_process_thread (boost::function<void()> func, pthread_t*, size_t stacksize);
bool is_realtime() const;
+ bool connected() const;
/* END BACKEND PROXY API */
diff --git a/libs/ardour/ardour/port_engine.h b/libs/ardour/ardour/port_engine.h
index 8dc35ec8f5..3044426ff9 100644
--- a/libs/ardour/ardour/port_engine.h
+++ b/libs/ardour/ardour/port_engine.h
@@ -94,6 +94,8 @@ class PortEngine {
virtual std::string get_port_name (PortHandle) const = 0;
virtual PortHandle* get_port_by_name (const std::string&) const = 0;
+ DataType port_data_type (PortHandle) const;
+
virtual std::string make_port_name_relative (const std::string& name) const = 0;
virtual std::string make_port_name_non_relative (const std::string& name) const = 0;
virtual bool port_is_mine (const std::string& fullname) const = 0;
diff --git a/libs/ardour/ardour/port_manager.h b/libs/ardour/ardour/port_manager.h
index 29a566aa2d..38c8d8bf98 100644
--- a/libs/ardour/ardour/port_manager.h
+++ b/libs/ardour/ardour/port_manager.h
@@ -58,7 +58,7 @@ class PortManager
int connect (const std::string& source, const std::string& destination);
int disconnect (const std::string& source, const std::string& destination);
int disconnect (boost::shared_ptr<Port>);
- bool connected (const std::string&);
+ bool has_connections (const std::string&);
int reestablish_ports ();
int reconnect_ports ();
@@ -71,7 +71,7 @@ class PortManager
void port_renamed (const std::string&, const std::string&);
ChanCount n_physical_outputs () const;
ChanCount n_physical_inputs () const;
- const char ** get_ports (const std::string& port_name_pattern, const std::string& type_name_pattern, uint32_t flags);
+ const char ** get_ports (const std::string& port_name_pattern, DataType type, uint32_t flags);
void remove_all_ports ();
diff --git a/libs/ardour/audioengine.cc b/libs/ardour/audioengine.cc
index 1f26e12a3b..b24008cd4e 100644
--- a/libs/ardour/audioengine.cc
+++ b/libs/ardour/audioengine.cc
@@ -668,6 +668,16 @@ AudioEngine::is_realtime() const
return _backend->is_realtime();
}
+bool
+AudioEngine::connected() const
+{
+ if (!_backend) {
+ return false;
+ }
+
+ return _backend->connected();
+}
+
void
AudioEngine::transport_start ()
{
diff --git a/libs/ardour/bundle.cc b/libs/ardour/bundle.cc
index 9d5640491f..162db6c793 100644
--- a/libs/ardour/bundle.cc
+++ b/libs/ardour/bundle.cc
@@ -459,7 +459,7 @@ Bundle::connected_to_anything (AudioEngine& engine)
rather than doing it with Port.
*/
- if (engine.connected (ports[j])) {
+ if (engine.has_connections (ports[j])) {
return true;
}
}
diff --git a/libs/ardour/jack_portengine.cc b/libs/ardour/jack_portengine.cc
index 99b0bd2b9a..b2534d47f5 100644
--- a/libs/ardour/jack_portengine.cc
+++ b/libs/ardour/jack_portengine.cc
@@ -98,3 +98,17 @@ JACKPortEngine::physically_connected (PortHandle p)
return false;
}
+
+DataType
+JACKPortEngine::port_data_type (PortHandle p)
+{
+ const char* t = jack_port_type (p);
+
+ if (strcmp (p, JACK_DEFAULT_AUDIO_TYPE) == 0) {
+ return DataType::AUDIO;
+ } else if (strcmp (p, JACK_DEFAULT_MIDI_TYPE) == 0) {
+ return DataType::MIDI;
+ }
+
+ return DataType::NIL;
+}
diff --git a/libs/ardour/port_manager.cc b/libs/ardour/port_manager.cc
index 1a08849791..0c7f4b46e5 100644
--- a/libs/ardour/port_manager.cc
+++ b/libs/ardour/port_manager.cc
@@ -263,7 +263,7 @@ AudioEngine::port_renamed (const std::string& old_relative_name, const std::stri
}
const char **
-AudioEngine::get_ports (const string& port_name_pattern, const string& type_name_pattern, uint32_t flags)
+AudioEngine::get_ports (const string& port_name_pattern, DataType type, uint32_t flags)
{
GET_PRIVATE_JACK_POINTER_RET (_jack,0);
if (!_running) {
@@ -274,7 +274,21 @@ AudioEngine::get_ports (const string& port_name_pattern, const string& type_name
return 0;
}
}
- return jack_get_ports (_priv_jack, port_name_pattern.c_str(), type_name_pattern.c_str(), flags);
+
+ const char* jack_type_string;
+
+ switch (type) {
+ case DataType::AUDIO:
+ jack_type_string = JACK_DEFAULT_AUDIO_TYPE;
+ break;
+ case DataType::AUDIO:
+ jack_type_string = JACK_DEFAULT_MIDI_TYPE;
+ break;
+ case DataType::NIL
+ return 0;
+ }
+
+ return jack_get_ports (_priv_jack, port_name_pattern.c_str(), jack_type_string, flags);
}
void