diff options
author | Robin Gareus <robin@gareus.org> | 2016-01-11 11:46:10 +0100 |
---|---|---|
committer | Robin Gareus <robin@gareus.org> | 2016-01-11 11:46:10 +0100 |
commit | cf6a3afcaa73770db9ea3651d0a3fa1ce626f28e (patch) | |
tree | b0bb12e928f06a083999299b5c3c719b41eb2a8b /libs/backends | |
parent | 0fc06b4a1b004d00b3d6a3fa5c6e56a67c163217 (diff) |
name ALSA midi ports after device4.6
Diffstat (limited to 'libs/backends')
-rw-r--r-- | libs/backends/alsa/alsa_audiobackend.cc | 35 | ||||
-rw-r--r-- | libs/backends/alsa/alsa_audiobackend.h | 4 |
2 files changed, 34 insertions, 5 deletions
diff --git a/libs/backends/alsa/alsa_audiobackend.cc b/libs/backends/alsa/alsa_audiobackend.cc index 725fc80b76..3658aa34a6 100644 --- a/libs/backends/alsa/alsa_audiobackend.cc +++ b/libs/backends/alsa/alsa_audiobackend.cc @@ -1220,12 +1220,29 @@ std::string AlsaAudioBackend::get_port_name (PortEngine::PortHandle port) const { if (!valid_port (port)) { - PBD::error << _("AlsaBackend::get_port_name: Invalid Port(s)") << endmsg; + PBD::warning << _("AlsaBackend::get_port_name: Invalid Port(s)") << endmsg; return std::string (); } return static_cast<AlsaPort*>(port)->name (); } +int +AlsaAudioBackend::get_port_property (PortHandle port, const std::string& key, std::string& value, std::string& type) const +{ + if (!valid_port (port)) { + PBD::warning << _("AlsaBackend::get_port_property: Invalid Port(s)") << endmsg; + return -1; + } + if (key == "http://jackaudio.org/metadata/pretty-name") { + type = ""; + value = static_cast<AlsaPort*>(port)->pretty_name (); + if (!value.empty()) { + return 0; + } + } + return -1; +} + PortEngine::PortHandle AlsaAudioBackend::get_port_by_name (const std::string& name) const { @@ -1347,7 +1364,9 @@ AlsaAudioBackend::register_system_audio_ports() PortHandle p = add_port(std::string(tmp), DataType::AUDIO, static_cast<PortFlags>(IsOutput | IsPhysical | IsTerminal)); if (!p) return -1; set_latency_range (p, false, lr); - _system_inputs.push_back(static_cast<AlsaPort*>(p)); + AlsaPort *ap = static_cast<AlsaPort*>(p); + //ap->set_pretty_name ("") + _system_inputs.push_back (ap); } lr.min = lr.max = lcpp + (_measure_latency ? 0 : _systemic_audio_output_latency); @@ -1357,7 +1376,9 @@ AlsaAudioBackend::register_system_audio_ports() PortHandle p = add_port(std::string(tmp), DataType::AUDIO, static_cast<PortFlags>(IsInput | IsPhysical | IsTerminal)); if (!p) return -1; set_latency_range (p, true, lr); - _system_outputs.push_back(static_cast<AlsaPort*>(p)); + AlsaPort *ap = static_cast<AlsaPort*>(p); + //ap->set_pretty_name ("") + _system_outputs.push_back (ap); } return 0; } @@ -1417,7 +1438,9 @@ AlsaAudioBackend::register_system_midi_ports(const std::string device) lr.min = lr.max = (_measure_latency ? 0 : nfo->systemic_output_latency); set_latency_range (p, true, lr); static_cast<AlsaMidiPort*>(p)->set_n_periods(_periods_per_cycle); // TODO check MIDI alignment - _system_midi_out.push_back(static_cast<AlsaPort*>(p)); + AlsaPort *ap = static_cast<AlsaPort*>(p); + ap->set_pretty_name (i->first); + _system_midi_out.push_back (ap); _rmidi_out.push_back (mout); } } @@ -1454,7 +1477,9 @@ AlsaAudioBackend::register_system_midi_ports(const std::string device) LatencyRange lr; lr.min = lr.max = (_measure_latency ? 0 : nfo->systemic_input_latency); set_latency_range (p, false, lr); - _system_midi_in.push_back(static_cast<AlsaPort*>(p)); + AlsaPort *ap = static_cast<AlsaPort*>(p); + ap->set_pretty_name (i->first); + _system_midi_in.push_back (ap); _rmidi_in.push_back (midin); } } diff --git a/libs/backends/alsa/alsa_audiobackend.h b/libs/backends/alsa/alsa_audiobackend.h index 2233c9be9e..01f757928f 100644 --- a/libs/backends/alsa/alsa_audiobackend.h +++ b/libs/backends/alsa/alsa_audiobackend.h @@ -70,9 +70,11 @@ class AlsaPort { virtual ~AlsaPort (); const std::string& name () const { return _name; } + const std::string& pretty_name () const { return _pretty_name; } PortFlags flags () const { return _flags; } int set_name (const std::string &name) { _name = name; return 0; } + int set_pretty_name (const std::string &name) { _pretty_name = name; return 0; } virtual DataType type () const = 0; @@ -112,6 +114,7 @@ class AlsaPort { private: AlsaAudioBackend &_alsa_backend; std::string _name; + std::string _pretty_name; const PortFlags _flags; LatencyRange _capture_latency_range; LatencyRange _playback_latency_range; @@ -263,6 +266,7 @@ class AlsaAudioBackend : public AudioBackend { int set_port_name (PortHandle, const std::string&); 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 get_ports (const std::string& port_name_pattern, DataType type, PortFlags flags, std::vector<std::string>&) const; |