From ca674efb2479c267b7518e150e8d20cb923c95c8 Mon Sep 17 00:00:00 2001 From: f4exb Date: Sat, 14 Oct 2017 07:28:57 +0200 Subject: [PATCH] FileSink output: force settings at startup and on deserialize --- plugins/samplesink/filesink/filesinkgui.cpp | 5 ++++- plugins/samplesink/filesink/filesinkgui.h | 1 + plugins/samplesink/filesink/filesinkoutput.cpp | 2 +- plugins/samplesink/filesink/filesinkoutput.h | 11 +++++++---- plugins/samplesink/filesink/filesinkplugin.cpp | 2 +- 5 files changed, 14 insertions(+), 7 deletions(-) diff --git a/plugins/samplesink/filesink/filesinkgui.cpp b/plugins/samplesink/filesink/filesinkgui.cpp index 3eae45c14..c27564726 100644 --- a/plugins/samplesink/filesink/filesinkgui.cpp +++ b/plugins/samplesink/filesink/filesinkgui.cpp @@ -38,6 +38,7 @@ FileSinkGui::FileSinkGui(DeviceSinkAPI *deviceAPI, QWidget* parent) : QWidget(parent), ui(new Ui::FileSinkGui), m_deviceAPI(deviceAPI), + m_forceSettings(true), m_settings(), m_fileName("./test.sdriq"), m_deviceSampleSink(0), @@ -117,6 +118,7 @@ bool FileSinkGui::deserialize(const QByteArray& data) { if(m_settings.deserialize(data)) { displaySettings(); + m_forceSettings = true; sendSettings(); return true; } else { @@ -196,8 +198,9 @@ void FileSinkGui::sendSettings() void FileSinkGui::updateHardware() { qDebug() << "FileSinkGui::updateHardware"; - FileSinkOutput::MsgConfigureFileSink* message = FileSinkOutput::MsgConfigureFileSink::create(m_settings); + FileSinkOutput::MsgConfigureFileSink* message = FileSinkOutput::MsgConfigureFileSink::create(m_settings, m_forceSettings); m_deviceSampleSink->getInputMessageQueue()->push(message); + m_forceSettings = false; m_updateTimer.stop(); } diff --git a/plugins/samplesink/filesink/filesinkgui.h b/plugins/samplesink/filesink/filesinkgui.h index 2c45b9dda..3df84e2e6 100644 --- a/plugins/samplesink/filesink/filesinkgui.h +++ b/plugins/samplesink/filesink/filesinkgui.h @@ -57,6 +57,7 @@ private: Ui::FileSinkGui* ui; DeviceSinkAPI* m_deviceAPI; + bool m_forceSettings; FileSinkSettings m_settings; QString m_fileName; QTimer m_updateTimer; diff --git a/plugins/samplesink/filesink/filesinkoutput.cpp b/plugins/samplesink/filesink/filesinkoutput.cpp index 123a1cac2..85630c132 100644 --- a/plugins/samplesink/filesink/filesinkoutput.cpp +++ b/plugins/samplesink/filesink/filesinkoutput.cpp @@ -157,7 +157,7 @@ bool FileSinkOutput::handleMessage(const Message& message) { qDebug() << "FileSinkOutput::handleMessage: MsgConfigureFileSink"; MsgConfigureFileSink& conf = (MsgConfigureFileSink&) message; - applySettings(conf.getSettings(), false); + applySettings(conf.getSettings(), conf.getForce()); return true; } else if (MsgConfigureFileSinkWork::match(message)) diff --git a/plugins/samplesink/filesink/filesinkoutput.h b/plugins/samplesink/filesink/filesinkoutput.h index c0725cd86..3b95bd570 100644 --- a/plugins/samplesink/filesink/filesinkoutput.h +++ b/plugins/samplesink/filesink/filesinkoutput.h @@ -36,18 +36,21 @@ public: public: const FileSinkSettings& getSettings() const { return m_settings; } + bool getForce() const { return m_force; } - static MsgConfigureFileSink* create(const FileSinkSettings& settings) + static MsgConfigureFileSink* create(const FileSinkSettings& settings, bool force) { - return new MsgConfigureFileSink(settings); + return new MsgConfigureFileSink(settings, force); } private: FileSinkSettings m_settings; + bool m_force; - MsgConfigureFileSink(const FileSinkSettings& settings) : + MsgConfigureFileSink(const FileSinkSettings& settings, bool force) : Message(), - m_settings(settings) + m_settings(settings), + m_force(force) { } }; diff --git a/plugins/samplesink/filesink/filesinkplugin.cpp b/plugins/samplesink/filesink/filesinkplugin.cpp index e2497ae1e..cf0f76a0c 100644 --- a/plugins/samplesink/filesink/filesinkplugin.cpp +++ b/plugins/samplesink/filesink/filesinkplugin.cpp @@ -25,7 +25,7 @@ const PluginDescriptor FileSinkPlugin::m_pluginDescriptor = { QString("File sink output"), - QString("3.5.0"), + QString("3.7.4"), QString("(c) Edouard Griffiths, F4EXB"), QString("https://github.com/f4exb/sdrangel"), true,