diff --git a/libs/backends/alsa/alsa_audiobackend.cc b/libs/backends/alsa/alsa_audiobackend.cc index d5e75b11ec..df5a7706ea 100644 --- a/libs/backends/alsa/alsa_audiobackend.cc +++ b/libs/backends/alsa/alsa_audiobackend.cc @@ -1251,8 +1251,8 @@ AlsaAudioBackend::set_port_property (PortHandle port, const std::string& key, co return -1; } if (key == "http://jackaudio.org/metadata/pretty-name" && type.empty ()) { - static_cast(port)->set_pretty_name (value); - return 0; + static_cast(port)->set_pretty_name (value); + return 0; } return -1; } diff --git a/libs/backends/coreaudio/coreaudio_backend.cc b/libs/backends/coreaudio/coreaudio_backend.cc index a620bf0826..8dcdf79643 100644 --- a/libs/backends/coreaudio/coreaudio_backend.cc +++ b/libs/backends/coreaudio/coreaudio_backend.cc @@ -935,6 +935,20 @@ CoreAudioBackend::get_port_property (PortHandle port, const std::string& key, st return -1; } +int +CoreAudioBackend::set_port_property (PortHandle port, const std::string& key, const std::string& value, const std::string& type) +{ + if (!valid_port (port)) { + PBD::warning << _("CoreAudioBackend::set_port_property: Invalid Port(s)") << endmsg; + return -1; + } + if (key == "http://jackaudio.org/metadata/pretty-name" && type.empty ()) { + static_cast(port)->set_pretty_name (value); + return 0; + } + return -1; +} + PortEngine::PortHandle CoreAudioBackend::get_port_by_name (const std::string& name) const { diff --git a/libs/backends/coreaudio/coreaudio_backend.h b/libs/backends/coreaudio/coreaudio_backend.h index e36e936918..11e8445ab5 100644 --- a/libs/backends/coreaudio/coreaudio_backend.h +++ b/libs/backends/coreaudio/coreaudio_backend.h @@ -330,6 +330,7 @@ class CoreAudioBackend : public AudioBackend { std::string get_port_name (PortHandle) const; PortHandle get_port_by_name (const std::string&) const; int get_port_property (PortHandle, const std::string& key, std::string& value, std::string& type) const; + int set_port_property (PortHandle, const std::string& key, const std::string& value, const std::string& type); int get_ports (const std::string& port_name_pattern, DataType type, PortFlags flags, std::vector&) const; diff --git a/libs/backends/dummy/dummy_audiobackend.cc b/libs/backends/dummy/dummy_audiobackend.cc index b168d4e32b..d1fe378e9f 100644 --- a/libs/backends/dummy/dummy_audiobackend.cc +++ b/libs/backends/dummy/dummy_audiobackend.cc @@ -684,13 +684,12 @@ DummyAudioBackend::set_port_property (PortHandle port, const std::string& key, c return -1; } if (key == "http://jackaudio.org/metadata/pretty-name" && type.empty ()) { - static_cast(port)->set_pretty_name (value); - return 0; + static_cast(port)->set_pretty_name (value); + return 0; } return -1; } - PortEngine::PortHandle DummyAudioBackend::get_port_by_name (const std::string& name) const { diff --git a/libs/backends/jack/jack_audiobackend.h b/libs/backends/jack/jack_audiobackend.h index 54eea35f02..847b21b767 100644 --- a/libs/backends/jack/jack_audiobackend.h +++ b/libs/backends/jack/jack_audiobackend.h @@ -133,6 +133,7 @@ class JACKAudioBackend : public AudioBackend { std::string get_port_name (PortHandle) const; PortHandle get_port_by_name (const std::string&) const; int get_port_property (PortHandle, const std::string& key, std::string& value, std::string& type) const; + int set_port_property (PortHandle, const std::string& key, const std::string& value, const std::string& type); int get_ports (const std::string& port_name_pattern, DataType type, PortFlags flags, std::vector&) const; diff --git a/libs/backends/jack/jack_portengine.cc b/libs/backends/jack/jack_portengine.cc index 10b2efed6b..0b25ecbe01 100644 --- a/libs/backends/jack/jack_portengine.cc +++ b/libs/backends/jack/jack_portengine.cc @@ -147,6 +147,20 @@ JACKAudioBackend::get_port_property (PortHandle port, const std::string& key, st #endif } +int +JACKAudioBackend::set_port_property (PortHandle port, const std::string& key, const std::string& value, const std::string& type) +{ +#ifdef HAVE_JACK_METADATA // really everyone ought to have this by now. + int rv = -1; + jack_client_t* client = _jack_connection->jack(); + jack_uuid_t uuid = jack_port_uuid((jack_port_t*) port); + return jack_set_property(client, uuid, key.c_str(), value.c_str(), type.c_str()); + return rv; +#else + return -1; +#endif +} + PortEngine::PortHandle JACKAudioBackend:: get_port_by_name (const std::string& name) const { diff --git a/libs/backends/portaudio/portaudio_backend.cc b/libs/backends/portaudio/portaudio_backend.cc index 52049caea1..26e3264e1f 100644 --- a/libs/backends/portaudio/portaudio_backend.cc +++ b/libs/backends/portaudio/portaudio_backend.cc @@ -1238,6 +1238,24 @@ PortAudioBackend::get_port_property (PortHandle port, return -1; } +int +PortAudioBackend::set_port_property (PortHandle port, + const std::string& key, + const std::string& value, + const std::string& type) +{ + if (!valid_port (port)) { + DEBUG_PORTS("get_port_name: Invalid Port(s)\n"); + return -1; + } + + if (key == "http://jackaudio.org/metadata/pretty-name" && type.empty ()) { + static_cast(port)->set_pretty_name (value); + return 0; + } + return -1; +} + PortEngine::PortHandle PortAudioBackend::get_port_by_name (const std::string& name) const { diff --git a/libs/backends/portaudio/portaudio_backend.h b/libs/backends/portaudio/portaudio_backend.h index 3e329a42e0..601c3433cb 100644 --- a/libs/backends/portaudio/portaudio_backend.h +++ b/libs/backends/portaudio/portaudio_backend.h @@ -267,6 +267,7 @@ class PortAudioBackend : public AudioBackend { std::string get_port_name (PortHandle) const; PortHandle get_port_by_name (const std::string&) const; int get_port_property (PortHandle, const std::string& key, std::string& value, std::string& type) const; + int set_port_property (PortHandle, const std::string& key, const std::string& value, const std::string& type); int get_ports (const std::string& port_name_pattern, DataType type, PortFlags flags, std::vector&) const;