Remove some unused PostTransport enums and renumber others.
[ardour.git] / libs / ardour / automation_list.cc
index b76fa0bb4bc6e2108b98f931de8aafa39493c4ed..b2bda4a20302dd572de6d15fafc674ebb8874874 100644 (file)
@@ -213,21 +213,30 @@ AutomationList::start_touch (double when)
 void
 AutomationList::stop_touch (bool mark, double when)
 {
+       if (g_atomic_int_get (&_touching) == 0) {
+               /* this touch has already been stopped (probably by Automatable::transport_stopped),
+                  so we've nothing to do.
+               */
+               return;
+       }
+
        g_atomic_int_set (&_touching, 0);
 
         if (_state == Touch) {
+
+               assert (!nascent.empty ());
+
                 Glib::Mutex::Lock lm (ControlList::_lock);
-                
+
                 if (mark) {
-                        nascent.back()->end_time = when;
-                        
+
+                       nascent.back()->end_time = when;
+
                 } else {
-                        
+
                         /* nascent info created in start touch but never used. just get rid of it.
                          */
 
-                       assert (!nascent.empty ());
-                        
                         NascentInfo* ninfo = nascent.back ();
                         nascent.erase (nascent.begin());
                         delete ninfo;
@@ -486,7 +495,7 @@ AutomationList::set_state (const XMLNode& node, int version)
        }
 
        bool have_events = false;
-       
+
        for (niter = nlist.begin(); niter != nlist.end(); ++niter) {
                if ((*niter)->name() == X_("events")) {
                        deserialize_events (*(*niter));