From d8cfb037980ccddeafe154209b65e81528c401bf Mon Sep 17 00:00:00 2001
From: Aaron Cuevas Lopez <aacuelo@teleco.upv.es>
Date: Tue, 11 Jul 2017 04:46:58 +0200
Subject: [PATCH] Fix channel duplication bug inside record node

---
 .../GenericProcessor/GenericProcessor.cpp           | 13 +++++++------
 Source/Processors/RecordNode/RecordNode.cpp         |  6 ++++--
 2 files changed, 11 insertions(+), 8 deletions(-)

diff --git a/Source/Processors/GenericProcessor/GenericProcessor.cpp b/Source/Processors/GenericProcessor/GenericProcessor.cpp
index 0e41d7b4d..b0f11fd1e 100755
--- a/Source/Processors/GenericProcessor/GenericProcessor.cpp
+++ b/Source/Processors/GenericProcessor/GenericProcessor.cpp
@@ -333,19 +333,20 @@ void GenericProcessor::update()
             dataChannelArray.add (ch);
         }
 
-        for (int i = 0; i < sourceNode->eventChannelArray.size(); ++i)
-        {
-            EventChannel* sourceChan = sourceNode->eventChannelArray[i];
-            EventChannel* ch = new EventChannel (*sourceChan);
+		for (int i = 0; i < sourceNode->eventChannelArray.size(); ++i)
+		{
+			EventChannel* sourceChan = sourceNode->eventChannelArray[i];
+			EventChannel* ch = new EventChannel(*sourceChan);
 			ch->eventMetaDataLock = true;
-            eventChannelArray.add (ch);
-        }
+			eventChannelArray.add(ch);
+		}
 		for (int i = 0; i < sourceNode->spikeChannelArray.size(); ++i)
 		{
 			SpikeChannel* sourceChan = sourceNode->spikeChannelArray[i];
 			SpikeChannel* ch = new SpikeChannel(*sourceChan);
 			ch->eventMetaDataLock = true;
 			spikeChannelArray.add(ch);
+
 		}
 		for (int i = 0; i < sourceNode->configurationObjectArray.size(); ++i)
 		{
diff --git a/Source/Processors/RecordNode/RecordNode.cpp b/Source/Processors/RecordNode/RecordNode.cpp
index 592f1cf8a..b0c04492b 100755
--- a/Source/Processors/RecordNode/RecordNode.cpp
+++ b/Source/Processors/RecordNode/RecordNode.cpp
@@ -159,8 +159,10 @@ void RecordNode::addInputChannel(const GenericProcessor* sourceNode, int chan)
 
         for (int n = 0; n < sourceNode->getTotalEventChannels(); n++)
         {
-
-            eventChannelArray.add(new EventChannel(*sourceNode->getEventChannel(n)));
+			const EventChannel* orig = sourceNode->getEventChannel(n);
+			//only add to the record node the events originating from this processor, to avoid duplicates
+			if (orig->getSourceNodeID() == sourceNode->getNodeId())
+				eventChannelArray.add(new EventChannel(*orig));
 
         }
 
-- 
GitLab