diff options
Diffstat (limited to 'libs/backends/coreaudio/coreaudio_backend.cc')
-rw-r--r-- | libs/backends/coreaudio/coreaudio_backend.cc | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/libs/backends/coreaudio/coreaudio_backend.cc b/libs/backends/coreaudio/coreaudio_backend.cc index 0047721d81..b1721dd2d5 100644 --- a/libs/backends/coreaudio/coreaudio_backend.cc +++ b/libs/backends/coreaudio/coreaudio_backend.cc @@ -902,11 +902,20 @@ CoreAudioBackend::port_name_size () const int CoreAudioBackend::set_port_name (PortEngine::PortHandle port, const std::string& name) { + std::string newname (_instance_name + ":" + name); if (!valid_port (port)) { PBD::warning << _("CoreAudioBackend::set_port_name: Invalid Port(s)") << endmsg; return -1; } - return static_cast<CoreBackendPort*>(port)->set_name (_instance_name + ":" + name); + if (find_port (newname)) { + PBD::error << _("CoreAudioBackend::set_port_name: Port with given name already exists") << endmsg; + return -1; + } + + CoreBackendPort* p = static_cast<CoreBackendPort*>(port); + _portmap.erase (p->name()); + _portmap.insert (make_pair (newname, p)); + return p->set_name (newname); } std::string |