diff --git a/libs/ardour/ardour/port_engine_shared.h b/libs/ardour/ardour/port_engine_shared.h index bd7dff0067..073f309a96 100644 --- a/libs/ardour/ardour/port_engine_shared.h +++ b/libs/ardour/ardour/port_engine_shared.h @@ -54,17 +54,25 @@ class LIBARDOUR_API BackendPort : public ProtoPort const std::string& name () const { return _name; } const std::string& pretty_name () const { return _pretty_name; } + const std::string& hw_port_name () const { return _hw_port_name; } int set_name (const std::string& name) { _name = name; return 0; } + /* called from PortEngineSharedImpl */ int set_pretty_name (const std::string& name) { _pretty_name = name; return 0; } + /* called from backends only */ + int set_hw_port_name (const std::string& name) { + _hw_port_name = name; + return 0; + } + virtual DataType type () const = 0; PortFlags flags () const { return _flags; } @@ -102,6 +110,7 @@ protected: private: std::string _name; std::string _pretty_name; + std::string _hw_port_name; const PortFlags _flags; LatencyRange _capture_latency_range; LatencyRange _playback_latency_range; diff --git a/libs/ardour/port_engine_shared.cc b/libs/ardour/port_engine_shared.cc index 1e9e26a93b..0baf23ee2d 100644 --- a/libs/ardour/port_engine_shared.cc +++ b/libs/ardour/port_engine_shared.cc @@ -514,6 +514,10 @@ PortEngineSharedImpl::get_port_property (PortEngine::PortHandle port, const std: if (!value.empty()) { return 0; } + value = boost::static_pointer_cast(port)->hw_port_name (); + if (!value.empty()) { + return 0; + } } return -1; } diff --git a/libs/backends/alsa/alsa_audiobackend.cc b/libs/backends/alsa/alsa_audiobackend.cc index 042ea82258..43e28d1b2a 100644 --- a/libs/backends/alsa/alsa_audiobackend.cc +++ b/libs/backends/alsa/alsa_audiobackend.cc @@ -1244,7 +1244,7 @@ AlsaAudioBackend::register_system_audio_ports() if (!p) return -1; set_latency_range (p, false, lr); BackendPortPtr ap = boost::dynamic_pointer_cast(p); - //ap->set_pretty_name ("") + //ap->set_hw_port_name ("") _system_inputs.push_back (ap); } @@ -1256,7 +1256,7 @@ AlsaAudioBackend::register_system_audio_ports() if (!p) return -1; set_latency_range (p, true, lr); BackendPortPtr ap = boost::dynamic_pointer_cast(p); - //ap->set_pretty_name ("") + //ap->set_hw_port_name ("") _system_outputs.push_back (ap); } return 0; @@ -1518,7 +1518,7 @@ AlsaAudioBackend::register_system_midi_ports(const std::string device) set_latency_range (p, true, lr); boost::dynamic_pointer_cast(p)->set_n_periods(_periods_per_cycle); // TODO check MIDI alignment BackendPortPtr ap = boost::dynamic_pointer_cast(p); - ap->set_pretty_name (replace_name_io (i->first, false)); + ap->set_hw_port_name (replace_name_io (i->first, false)); pthread_mutex_lock (&_device_port_mutex); _system_midi_out.push_back (ap); pthread_mutex_unlock (&_device_port_mutex); @@ -1565,7 +1565,7 @@ AlsaAudioBackend::register_system_midi_ports(const std::string device) lr.min = lr.max = (_measure_latency ? 0 : nfo->systemic_input_latency); set_latency_range (p, false, lr); BackendPortPtr ap = boost::dynamic_pointer_cast(p); - ap->set_pretty_name (replace_name_io (i->first, true)); + ap->set_hw_port_name (replace_name_io (i->first, true)); pthread_mutex_lock (&_device_port_mutex); _system_midi_in.push_back (ap); pthread_mutex_unlock (&_device_port_mutex); diff --git a/libs/backends/coreaudio/coreaudio_backend.cc b/libs/backends/coreaudio/coreaudio_backend.cc index c355c89db5..246e9e7c48 100644 --- a/libs/backends/coreaudio/coreaudio_backend.cc +++ b/libs/backends/coreaudio/coreaudio_backend.cc @@ -948,7 +948,7 @@ CoreAudioBackend::register_system_audio_ports() if (!p) return -1; set_latency_range (p, false, lr); BackendPortPtr cp = boost::dynamic_pointer_cast(p); - cp->set_pretty_name (_pcmio->cached_port_name(i, true)); + cp->set_hw_port_name (_pcmio->cached_port_name(i, true)); _system_inputs.push_back(cp); } @@ -960,7 +960,7 @@ CoreAudioBackend::register_system_audio_ports() if (!p) return -1; set_latency_range (p, true, lr); BackendPortPtr cp = boost::dynamic_pointer_cast(p); - cp->set_pretty_name (_pcmio->cached_port_name(i, false)); + cp->set_hw_port_name (_pcmio->cached_port_name(i, false)); _system_outputs.push_back(cp); } return 0; @@ -1032,7 +1032,7 @@ CoreAudioBackend::coremidi_rediscover() lr.min = lr.max = _samples_per_period; // TODO add per-port midi-systemic latency set_latency_range (p, false, lr); BackendPortPtr pp = boost::dynamic_pointer_cast(p); - pp->set_pretty_name(_midiio->port_name(i, true)); + pp->set_hw_port_name(_midiio->port_name(i, true)); _system_midi_in.push_back(pp); _port_change_flag = true; } @@ -1055,7 +1055,7 @@ CoreAudioBackend::coremidi_rediscover() lr.min = lr.max = _samples_per_period; // TODO add per-port midi-systemic latency set_latency_range (p, false, lr); BackendPortPtr pp = boost::dynamic_pointer_cast(p); - pp->set_pretty_name(_midiio->port_name(i, false)); + pp->set_hw_port_name(_midiio->port_name(i, false)); _system_midi_out.push_back(pp); _port_change_flag = true; } diff --git a/libs/backends/dummy/dummy_audiobackend.cc b/libs/backends/dummy/dummy_audiobackend.cc index 5c63376524..18aab7f5b9 100644 --- a/libs/backends/dummy/dummy_audiobackend.cc +++ b/libs/backends/dummy/dummy_audiobackend.cc @@ -693,7 +693,7 @@ DummyAudioBackend::register_system_ports() std::string name = dp->setup_generator (gt, _samplerate, i - 1, a_ins); if (!name.empty ()) { - dp->set_pretty_name (name); + dp->set_hw_port_name (name); } } @@ -723,13 +723,13 @@ DummyAudioBackend::register_system_ports() if (_midi_mode == MidiGenerator) { std::string name = dp->setup_generator (i % NUM_MIDI_EVENT_GENERATORS, _samplerate); if (!name.empty ()) { - dp->set_pretty_name (name); + dp->set_hw_port_name (name); } } else if (_midi_mode == MidiOneHz) { std::string name = dp->setup_generator (-1, _samplerate); if (!name.empty ()) { - dp->set_pretty_name (name); + dp->set_hw_port_name (name); } } } @@ -753,7 +753,7 @@ DummyAudioBackend::register_system_ports() ss << " >" << (apc + 1); } } - dp->set_pretty_name (ss.str()); + dp->set_hw_port_name (ss.str()); } } return 0; diff --git a/libs/backends/portaudio/portaudio_backend.cc b/libs/backends/portaudio/portaudio_backend.cc index c7a1bb5b4c..22d8979e2d 100644 --- a/libs/backends/portaudio/portaudio_backend.cc +++ b/libs/backends/portaudio/portaudio_backend.cc @@ -1213,7 +1213,7 @@ PortAudioBackend::register_system_audio_ports() if (!p) return -1; set_latency_range (p, false, lr); boost::shared_ptr audio_port = boost::dynamic_pointer_cast(p); - audio_port->set_pretty_name ( + audio_port->set_hw_port_name ( _pcmio->get_input_channel_name (name_to_id (_input_audio_device), i)); _system_inputs.push_back (audio_port); } @@ -1226,7 +1226,7 @@ PortAudioBackend::register_system_audio_ports() if (!p) return -1; set_latency_range (p, true, lr); boost::shared_ptr audio_port = boost::dynamic_pointer_cast(p); - audio_port->set_pretty_name ( + audio_port->set_hw_port_name ( _pcmio->get_output_channel_name (name_to_id (_output_audio_device), i)); _system_outputs.push_back(audio_port); } @@ -1263,7 +1263,7 @@ PortAudioBackend::register_system_midi_ports() set_latency_range (p, false, lr); boost::shared_ptr midi_port = boost::dynamic_pointer_cast(p); - midi_port->set_pretty_name ((*i)->name()); + midi_port->set_hw_port_name ((*i)->name()); _system_midi_in.push_back (midi_port); DEBUG_MIDI (string_compose ("Registered MIDI input port: %1\n", port_name)); } @@ -1288,7 +1288,7 @@ PortAudioBackend::register_system_midi_ports() boost::shared_ptr midi_port = boost::dynamic_pointer_cast(p); midi_port->set_n_periods(2); - midi_port->set_pretty_name ((*i)->name()); + midi_port->set_hw_port_name ((*i)->name()); _system_midi_out.push_back (midi_port); DEBUG_MIDI (string_compose ("Registered MIDI output port: %1\n", port_name)); } diff --git a/libs/backends/pulseaudio/pulseaudio_backend.cc b/libs/backends/pulseaudio/pulseaudio_backend.cc index 5ebb1f398e..693f22bad6 100644 --- a/libs/backends/pulseaudio/pulseaudio_backend.cc +++ b/libs/backends/pulseaudio/pulseaudio_backend.cc @@ -828,7 +828,7 @@ PulseAudioBackend::register_system_ports () return -1; } set_latency_range (p, true, lr); - //p->set_pretty_name ("") + //p->set_hw_port_name ("") _system_outputs.push_back (p); } return 0;