From: Robin Gareus Date: Sun, 7 Sep 2014 23:25:56 +0000 (+0200) Subject: ALSA|Dummy: ignore port unregistration when engine is stopped X-Git-Tag: 4.0-rc1~1601^2~227 X-Git-Url: https://git.carlh.net/gitweb/?a=commitdiff_plain;h=b1da9af8de8cc648d88fbc944c68f1d9f6d1b8c9;p=ardour.git ALSA|Dummy: ignore port unregistration when engine is stopped When changing Engine parameters, ardour first stops the engine and only later when re-etablishing ports unregisters/re-registers them. ALSA: silently ignore port unregs and silently accept registrations Dummy: print a PBD::info message, --- diff --git a/libs/backends/alsa/alsa_audiobackend.cc b/libs/backends/alsa/alsa_audiobackend.cc index 834ea41e49..936fc990ce 100644 --- a/libs/backends/alsa/alsa_audiobackend.cc +++ b/libs/backends/alsa/alsa_audiobackend.cc @@ -914,8 +914,8 @@ AlsaAudioBackend::add_port ( void AlsaAudioBackend::unregister_port (PortEngine::PortHandle port_handle) { - if (!valid_port (port_handle)) { - PBD::error << _("AlsaBackend::unregister_port: Invalid Port.") << endmsg; + if (!_run) { + return; } AlsaPort* port = static_cast(port_handle); std::vector::iterator i = std::find (_ports.begin (), _ports.end (), static_cast(port_handle)); diff --git a/libs/backends/dummy/dummy_audiobackend.cc b/libs/backends/dummy/dummy_audiobackend.cc index e8a21df292..10df74d676 100644 --- a/libs/backends/dummy/dummy_audiobackend.cc +++ b/libs/backends/dummy/dummy_audiobackend.cc @@ -595,6 +595,9 @@ DummyAudioBackend::register_port ( { if (name.size () == 0) { return 0; } if (flags & IsPhysical) { return 0; } + if (!_running) { + PBD::info << _("DummyBackend::register_port: Engine is not running.") << endmsg; + } return add_port (_instance_name + ":" + name, type, flags); } @@ -631,8 +634,10 @@ DummyAudioBackend::add_port ( void DummyAudioBackend::unregister_port (PortEngine::PortHandle port_handle) { - if (!valid_port (port_handle)) { - PBD::error << _("DummyBackend::unregister_port: Invalid Port.") << endmsg; + if (!_running) { + PBD::info << _("DummyBackend::unregister_port: Engine is not running.") << endmsg; + assert (!valid_port (port_handle)); + return; } DummyPort* port = static_cast(port_handle); std::vector::iterator i = std::find (_ports.begin (), _ports.end (), static_cast(port_handle));