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