Trim some lock / unlock cycles on the trigger mutex.
authorCarl Hetherington <carl@carlh.net>
Sat, 14 Jan 2012 22:02:26 +0000 (22:02 +0000)
committerCarl Hetherington <carl@carlh.net>
Sat, 14 Jan 2012 22:02:26 +0000 (22:02 +0000)
git-svn-id: svn://localhost/ardour2/branches/3.0@11245 d708f5d6-7413-0410-9779-e7cbd77b26cf

libs/ardour/graph.cc

index 1c1f784f4162a5437c8d67b57a3df586df902f64..99fc52453449d03d1e26dec4a4b338f84b5fd280 100644 (file)
@@ -222,17 +222,18 @@ Graph::prep()
         _finished_refcount = _init_finished_refcount[chain];
 
        /* Trigger the initial nodes for processing, which are the ones at the `input' end */
+       pthread_mutex_lock (&_trigger_mutex);
         for (i=_init_trigger_list[chain].begin(); i!=_init_trigger_list[chain].end(); i++) {
-                trigger (i->get ());
+               /* don't use ::trigger here, as we have already locked the mutex */
+                _trigger_queue.push_back (i->get ());
         }
+       pthread_mutex_unlock (&_trigger_mutex);
 }
 
 void
 Graph::trigger (GraphNode* n)
 {
-        pthread_mutex_lock (&_trigger_mutex);
         _trigger_queue.push_back (n);
-        pthread_mutex_unlock (&_trigger_mutex);
 }
 
 /** Called when a node at the `output' end of the chain (ie one that has no-one to feed)