X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fardour%2Fcontrol_protocol_manager.cc;h=a0a36c17dd2150480e4262d4caea12dd51a8fa14;hb=af15cf9ef7c34b0667aa65e0818c26a4fdd2a9ed;hp=2b0a4dce4cd71e5fb8ddb822cdbbbb9d718e35d6;hpb=cf52d6e4b40111eb04b244ec054055a4ec15dbe0;p=ardour.git diff --git a/libs/ardour/control_protocol_manager.cc b/libs/ardour/control_protocol_manager.cc index 2b0a4dce4c..a0a36c17dd 100644 --- a/libs/ardour/control_protocol_manager.cc +++ b/libs/ardour/control_protocol_manager.cc @@ -43,6 +43,22 @@ using namespace PBD; ControlProtocolManager* ControlProtocolManager::_instance = 0; const string ControlProtocolManager::state_node_name = X_("ControlProtocols"); + +ControlProtocolInfo::~ControlProtocolInfo () +{ + if (protocol && descriptor) { + descriptor->destroy (descriptor, protocol); + protocol = 0; + } + + delete state; state = 0; + + if (descriptor) { + delete (Glib::Module*) descriptor->module; + descriptor = 0; + } +} + ControlProtocolManager::ControlProtocolManager () { } @@ -434,6 +450,7 @@ ControlProtocolManager::set_state (const XMLNode& node, int /*version*/) ControlProtocolInfo* cpi = cpi_by_name (prop->value()); if (cpi) { + delete cpi->state; cpi->state = new XMLNode (**citer); if (active) {