From 9bb2f2bb6994586e77caed9cdee40607d370e428 Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Thu, 5 Sep 2019 18:59:26 +0200 Subject: [PATCH] Prevent duplicate Ctrl-protocol instances ControlProtocols are single instance. Activating an already active protocol leads to crashes due to various rasons (e.g. port already registered), re-used singleton event_loop_name and request-buffers, duplicate free of AbstractUI request buffers during deactivate,.. --- libs/ardour/control_protocol_manager.cc | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/libs/ardour/control_protocol_manager.cc b/libs/ardour/control_protocol_manager.cc index eabc4e5006..c7be44a4c8 100644 --- a/libs/ardour/control_protocol_manager.cc +++ b/libs/ardour/control_protocol_manager.cc @@ -129,6 +129,11 @@ ControlProtocolManager::activate (ControlProtocolInfo& cpi) cpi.requested = true; + if (cpi.protocol && cpi.protocol->active()) { + warning << string_compose (_("Control protocol %1 was already active."), cpi.name) << endmsg; + return 0; + } + if ((cp = instantiate (cpi)) == 0) { return -1; }