From b1da9af8de8cc648d88fbc944c68f1d9f6d1b8c9 Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Mon, 8 Sep 2014 01:25:56 +0200 Subject: [PATCH] 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, --- libs/backends/alsa/alsa_audiobackend.cc | 4 ++-- libs/backends/dummy/dummy_audiobackend.cc | 9 +++++++-- 2 files changed, 9 insertions(+), 4 deletions(-) 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)); -- 2.30.2