use ForGroup to flag and detect route-group based control changes
[ardour.git] / libs / ardour / graphnode.cc
index cfcea4d72640f703fec5874dcafb103d15c26913..c8923a043df84f441d2d0f1e316bebb36d84665d 100644 (file)
 
 using namespace ARDOUR;
 
-GraphNode::GraphNode (graph_ptr_t graph)
+GraphNode::GraphNode (boost::shared_ptr<Graph> graph)
         : _graph(graph)
-{ 
+{
+}
+
+GraphNode::~GraphNode()
+{
 }
 
 void
 GraphNode::prep (int chain)
 {
+       /* This is the number of nodes that directly feed us */
         _refcount = _init_refcount[chain];
 }
 
+/** Called by another node to tell us that one of the nodes that feed us
+ *  has been processed.
+ */
 void
 GraphNode::dec_ref()
 {
-        if (g_atomic_int_dec_and_test (&_refcount))
+        if (g_atomic_int_dec_and_test (&_refcount)) {
+               /* All the nodes that feed us are done, so we can queue this node
+                  for processing.
+               */
                 _graph->trigger (this);
+       }
 }
 
 void
@@ -48,12 +60,14 @@ GraphNode::finish (int chain)
         node_set_t::iterator i;
         bool feeds_somebody = false;
 
+       /* Tell the nodes that we feed that we've finished */
         for (i=_activation_set[chain].begin(); i!=_activation_set[chain].end(); i++) {
                 (*i)->dec_ref();
                 feeds_somebody = true;
         }
 
         if (!feeds_somebody) {
+               /* This node does not feed anybody, so decrement the graph's finished count */
                 _graph->dec_ref();
         }
 }