From 1d5e5b352390282a048ee7bf97349509f25d0014 Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Sat, 23 Mar 2019 16:14:15 +0100 Subject: [PATCH] Clean up MonitorProcessorControls As opposed to regular AutomationControls these PBD:::Controllables are not SessionObjects and don't emit a signal when the session goes away. --- libs/ardour/ardour/monitor_processor.h | 1 + libs/ardour/monitor_processor.cc | 17 ++++++++++++++++- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/libs/ardour/ardour/monitor_processor.h b/libs/ardour/ardour/monitor_processor.h index 63e153e48e..5f233d9ad0 100644 --- a/libs/ardour/ardour/monitor_processor.h +++ b/libs/ardour/ardour/monitor_processor.h @@ -192,6 +192,7 @@ private: MPControl& soloed; ChannelRecord (uint32_t); + ~ChannelRecord (); }; std::vector _channels; diff --git a/libs/ardour/monitor_processor.cc b/libs/ardour/monitor_processor.cc index 56d8f879d6..b4e996a52e 100644 --- a/libs/ardour/monitor_processor.cc +++ b/libs/ardour/monitor_processor.cc @@ -78,6 +78,13 @@ MonitorProcessor::MonitorProcessor (Session& s) MonitorProcessor::~MonitorProcessor () { allocate_channels (0); + + /* special case for MPControl */ + _dim_all_control->DropReferences (); /* EMIT SIGNAL */ + _cut_all_control->DropReferences (); /* EMIT SIGNAL */ + _mono_control->DropReferences (); /* EMIT SIGNAL */ + _dim_level_control->DropReferences (); /* EMIT SIGNAL */ + _solo_boost_level_control->DropReferences (); /* EMIT SIGNAL */ } void @@ -542,5 +549,13 @@ MonitorProcessor::ChannelRecord::ChannelRecord (uint32_t chn) , polarity (*polarity_ptr) , soloed (*soloed_ptr) { - +} + +MonitorProcessor::ChannelRecord::~ChannelRecord () +{ + /* special case for MPControl */ + cut_control->DropReferences(); /* EMIT SIGNAL */ + dim_control->DropReferences(); /* EMIT SIGNAL */ + polarity_control->DropReferences(); /* EMIT SIGNAL */ + soloed_control->DropReferences(); /* EMIT SIGNAL */ }