fix crash during session deletion while removing VCA masters
authorPaul Davis <paul@linuxaudiosystems.com>
Wed, 1 Jun 2016 19:15:03 +0000 (15:15 -0400)
committerPaul Davis <paul@linuxaudiosystems.com>
Wed, 1 Jun 2016 19:15:13 +0000 (15:15 -0400)
libs/ardour/slavable_automation_control.cc

index 4da324515a5f844cfdd62d7a2fd64304f330474b..d4002343e881e48909eb37e7c54b0da16e00d4a4 100644 (file)
@@ -250,18 +250,22 @@ SlavableAutomationControl::remove_master (boost::shared_ptr<AutomationControl> m
 
        pre_remove_master (m);
 
-
        {
                Glib::Threads::RWLock::WriterLock lm (master_lock);
                current_value = get_value_locked ();
                erased = _masters.erase (m->id());
-               if (erased) {
+               if (erased && !_session.deletion_in_progress()) {
                        recompute_masters_ratios (current_value);
                }
                masters_left = _masters.size ();
                new_value = get_value_locked ();
        }
 
+       if (_session.deletion_in_progress()) {
+               /* no reason to care about new values or sending signals */
+               return;
+       }
+
        if (erased) {
                MasterStatusChange (); /* EMIT SIGNAL */
        }