From d0679bb5d894035c080e8f933c209cfe8d3ca1ed Mon Sep 17 00:00:00 2001
From: Aaron Cuevas Lopez <aacuelo@teleco.upv.es>
Date: Tue, 4 Nov 2014 04:00:00 +0100
Subject: [PATCH] Fix thread lock when updating time position in file reader

---
 .../Processors/FileReader/FileReaderEditor.cpp   | 16 +++++++++++++---
 Source/Processors/FileReader/FileReaderEditor.h  |  4 +++-
 2 files changed, 16 insertions(+), 4 deletions(-)

diff --git a/Source/Processors/FileReader/FileReaderEditor.cpp b/Source/Processors/FileReader/FileReaderEditor.cpp
index 07111a940..ce2d57c7c 100644
--- a/Source/Processors/FileReader/FileReaderEditor.cpp
+++ b/Source/Processors/FileReader/FileReaderEditor.cpp
@@ -145,7 +145,6 @@ void FileReaderEditor::setTotalTime(unsigned int ms)
 
 void FileReaderEditor::setCurrentTime(unsigned int ms)
 {
-    MessageManagerLock mml;
     currentTime->setTimeMilliseconds(0,ms);
 }
 
@@ -296,10 +295,21 @@ void DualTimeComponent::setTimeMilliseconds(unsigned int index, unsigned int tim
     time /= 60;
     hourFrac = time;
 
-    String text = String(hourFrac).paddedLeft('0',2) + ":" + String(minFrac).paddedLeft('0',2) + ":" +
+    labelText[index] = String(hourFrac).paddedLeft('0',2) + ":" + String(minFrac).paddedLeft('0',2) + ":" +
                   String(secFrac).paddedLeft('0',2) + "." + String(msFrac).paddedLeft('0',3);
+	if (editor->acquisitionIsActive)
+	{
+		triggerAsyncUpdate();
+	}
+	else
+	{
+		timeLabel[index]->setText(labelText[index],dontSendNotification);
+	}		
+}
 
-    timeLabel[index]->setText(text,dontSendNotification);
+void DualTimeComponent::handleAsyncUpdate()
+{
+	timeLabel[0]->setText(labelText[0],dontSendNotification);
 }
 
 unsigned int DualTimeComponent::getTimeMilliseconds(unsigned int index)
diff --git a/Source/Processors/FileReader/FileReaderEditor.h b/Source/Processors/FileReader/FileReaderEditor.h
index a94106a38..aa365bf46 100644
--- a/Source/Processors/FileReader/FileReaderEditor.h
+++ b/Source/Processors/FileReader/FileReaderEditor.h
@@ -87,7 +87,7 @@ private:
 };
 
 class DualTimeComponent : public Component,
-    public Label::Listener
+	public Label::Listener, public AsyncUpdater
 {
 public:
     DualTimeComponent(FileReaderEditor* e, bool isEditable);
@@ -97,12 +97,14 @@ public:
     void paint(Graphics& g);
     void labelTextChanged(Label* label);
     void setEnable(bool enable);
+	void handleAsyncUpdate();
 
 private:
     ScopedPointer<Label> timeLabel[2];
     unsigned int msTime[2];
     FileReaderEditor* editor;
     bool editable;
+	String labelText[2];
 
 };
 
-- 
GitLab