From b042072df4fcf8fd036965d2c9f5d17c34e0d2c1 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Mon, 11 Apr 2016 09:46:45 -0400 Subject: fix logic for removing an AutomationControl from a ControlGroup --- libs/ardour/control_group.cc | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) (limited to 'libs/ardour/control_group.cc') diff --git a/libs/ardour/control_group.cc b/libs/ardour/control_group.cc index 6752940d27..2fe6af26ef 100644 --- a/libs/ardour/control_group.cc +++ b/libs/ardour/control_group.cc @@ -104,9 +104,19 @@ ControlGroup::control_going_away (boost::weak_ptr wac) int ControlGroup::remove_control (boost::shared_ptr ac) { - Glib::Threads::RWLock::WriterLock lm (controls_lock); + int erased; + + { + Glib::Threads::RWLock::WriterLock lm (controls_lock); + erased = _controls.erase (ac->id()); + } + + if (erased) { + ac->set_group (boost::shared_ptr()); + } + /* return zero if erased, non-zero otherwise */ - return !(_controls.erase (ac->id()) > 0); + return !erased; } int -- cgit v1.2.3