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