diff options
Diffstat (limited to 'libs/ardour')
-rw-r--r-- | libs/ardour/ardour/audioengine.h | 1 | ||||
-rw-r--r-- | libs/ardour/ardour/port_engine.h | 2 | ||||
-rw-r--r-- | libs/ardour/ardour/port_manager.h | 4 | ||||
-rw-r--r-- | libs/ardour/audioengine.cc | 10 | ||||
-rw-r--r-- | libs/ardour/bundle.cc | 2 | ||||
-rw-r--r-- | libs/ardour/jack_portengine.cc | 14 | ||||
-rw-r--r-- | libs/ardour/port_manager.cc | 18 |
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 |