amend a1b4f9b8ab - handle disconnecting from all masters
authorRobin Gareus <robin@gareus.org>
Sat, 10 Jun 2017 12:37:05 +0000 (14:37 +0200)
committerRobin Gareus <robin@gareus.org>
Sat, 10 Jun 2017 12:38:21 +0000 (14:38 +0200)
libs/ardour/slavable_automation_control.cc

index 5f24a8786fbe8e9decc2ab79ab1c9a42c56404eb..c912d163707acb0a9f67e6bb73f86b3e01cdf20d 100644 (file)
@@ -328,12 +328,12 @@ SlavableAutomationControl::master_going_away (boost::weak_ptr<AutomationControl>
 void
 SlavableAutomationControl::remove_master (boost::shared_ptr<AutomationControl> m)
 {
-       masters_connections.erase (boost::weak_ptr<AutomationControl>(m));
        pre_remove_master (m);
 
        {
                Glib::Threads::RWLock::WriterLock lm (master_lock);
 
+               masters_connections.erase (boost::weak_ptr<AutomationControl>(m));
                if (!_masters.erase (m->id())) {
                        return;
                }
@@ -386,6 +386,7 @@ SlavableAutomationControl::clear_masters ()
                        had_masters = true;
                }
                _masters.clear ();
+               masters_connections.clear ();
                new_value = get_value_locked ();
        }