From 83fdb05d7a49bdbc27402eb5b7ce73c5ab9eddef Mon Sep 17 00:00:00 2001
From: Aaron Cuevas Lopez <aacuelo@teleco.upv.es>
Date: Wed, 11 Mar 2015 04:04:51 +0100
Subject: [PATCH] Prevent race condition toggling leds

---
 Source/Processors/DataThreads/RHD2000Thread.cpp | 10 ++++++++--
 Source/Processors/DataThreads/RHD2000Thread.h   |  1 +
 2 files changed, 9 insertions(+), 2 deletions(-)

diff --git a/Source/Processors/DataThreads/RHD2000Thread.cpp b/Source/Processors/DataThreads/RHD2000Thread.cpp
index dec31657a..7e176bd97 100644
--- a/Source/Processors/DataThreads/RHD2000Thread.cpp
+++ b/Source/Processors/DataThreads/RHD2000Thread.cpp
@@ -82,7 +82,7 @@ RHD2000Thread::RHD2000Thread(SourceNode* sn) : DataThread(sn),
     savedSampleRateIndex(16),
     cableLengthPortA(0.914f), cableLengthPortB(0.914f), cableLengthPortC(0.914f), cableLengthPortD(0.914f), // default is 3 feet (0.914 m),
     audioOutputL(-1), audioOutputR(-1) ,numberingScheme(1),
-    newScan(true)
+	newScan(true), ledsEnabled(true)
 {
 	impedanceThread = new RHDImpedanceMeasure(this);
 
@@ -1451,6 +1451,7 @@ bool RHD2000Thread::stopAcquisition()
     }
 
     isTransmitting = false;
+	dacOutputShouldChange = false;
 
     return true;
 }
@@ -1596,6 +1597,7 @@ bool RHD2000Thread::updateBuffer()
         evalBoard->setExternalFastSettleChannel(fastSettleTTLChannel);
         evalBoard->setDacHighpassFilter(desiredDAChpf);
         evalBoard->enableDacHighpassFilter(desiredDAChpfState);
+		evalBoard->enableBoardLeds(ledsEnabled);
 
         dacOutputShouldChange = false;
     }
@@ -1701,7 +1703,11 @@ int RHD2000Thread::getHeadstageChannel(int& hs, int ch)
 
 void RHD2000Thread::enableBoardLeds(bool enable)
 {
-	evalBoard->enableBoardLeds(enable);
+	ledsEnabled = enable;
+	if (isAcquisitionActive())
+		dacOutputShouldChange = true;
+	else
+		evalBoard->enableBoardLeds(enable);
 }
 
 void RHD2000Thread::runImpedanceTest(ImpedanceData* data)
diff --git a/Source/Processors/DataThreads/RHD2000Thread.h b/Source/Processors/DataThreads/RHD2000Thread.h
index e42445faa..0b33c440c 100644
--- a/Source/Processors/DataThreads/RHD2000Thread.h
+++ b/Source/Processors/DataThreads/RHD2000Thread.h
@@ -201,6 +201,7 @@ private:
     Array<float> adcBitVolts;
     bool newScan;
 	ScopedPointer<RHDImpedanceMeasure> impedanceThread;
+	bool ledsEnabled;
 
     JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(RHD2000Thread);
 };
-- 
GitLab