From 1dd49f23f8dd757bdb8985494131105674c6ebe1 Mon Sep 17 00:00:00 2001 From: Jan Grewe Date: Wed, 5 Sep 2018 11:24:36 +0200 Subject: [PATCH] one dataQueue per application --- mainwindow.cpp | 9 ++++++++- mainwindow.h | 1 + multichartview.cpp | 19 +++++++------------ multichartview.h | 4 ++-- 4 files changed, 18 insertions(+), 15 deletions(-) diff --git a/mainwindow.cpp b/mainwindow.cpp index 5046256..8f5286e 100644 --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -21,6 +21,10 @@ MainWindow::MainWindow(QWidget *parent) : connect(dataService, SIGNAL(resultReady()), this, SLOT(handleResult())); dataServiceThread.start(); */ + + DataLoader *loader = new DataLoader(); + loader->moveToThread(&dataQueue); + dataQueue.start(); file = nix::File::open("/home/grewe/zwischenlager/2017-08-17-af-invivo-1/2017-08-17-af-invivo-1.nix", nix::FileMode::ReadOnly); @@ -30,7 +34,7 @@ MainWindow::MainWindow(QWidget *parent) : this->voltage = b.getDataArray("V-1"); this->eod = b.getDataArray("EOD"); - MultiChartView *mcv = new MultiChartView(); + MultiChartView *mcv = new MultiChartView(&dataQueue); ui->vbox->addWidget(mcv); mcv->addArray(eod); @@ -42,5 +46,8 @@ MainWindow::~MainWindow() { if (file) { file.close(); } + dataQueue.stop(); + dataQueue.quit(); + dataQueue.wait(); delete ui; } diff --git a/mainwindow.h b/mainwindow.h index 9a14759..60107a9 100644 --- a/mainwindow.h +++ b/mainwindow.h @@ -27,6 +27,7 @@ public: private: Ui::MainWindow *ui; + DataQueue dataQueue; nix::DataArray voltage, eod; nix::File file; }; diff --git a/multichartview.cpp b/multichartview.cpp index 19531f0..9d92c3c 100644 --- a/multichartview.cpp +++ b/multichartview.cpp @@ -4,18 +4,16 @@ using namespace QtCharts; -MultiChartView::MultiChartView(QWidget *parent) : - QWidget(parent), +MultiChartView::MultiChartView(DataQueue *queue, QWidget *parent) : + QWidget(parent), dataQueue(queue), ui(new Ui::MultiChartView) { ui->setupUi(this); xRangeMax = 0.0; xRangeMin = 0.0; - connect(&dataQueue, SIGNAL(resultReady(QString)), this, SLOT(dataReady(QString))); + connect(dataQueue, SIGNAL(resultReady(QString)), this, SLOT(dataReady(QString))); //connect(&dataQueue, SIGNAL(finished()), &dataQueue, SLOT(deleteLater())); - DataLoader *loader = new DataLoader(); - loader->moveToThread(&dataQueue); - dataQueue.start(); + } @@ -29,15 +27,12 @@ MultiChartView::~MultiChartView() for (vit = viewMap.begin(); vit != viewMap.end(); vit++) { delete vit->second; } - dataQueue.stop(); - dataQueue.quit(); - dataQueue.wait(); delete ui; } void MultiChartView::addArray(const nix::DataArray &array) { - while (dataQueue.isRunning()){ + while (dataQueue->isRunning()){ // uncool!!! } @@ -94,12 +89,12 @@ void MultiChartView::loadData(const ArrayInfo &info) { nix::NDSize count(1, 100000); nix::NDSize start(1, 0); std::string vId, eodId; - dataQueue.requestData(arrayMap.at(info.arrayid), count, start, vId); + dataQueue->requestData(arrayMap.at(info.arrayid), count, start, vId); } } void MultiChartView::dataReady(QString requestId){ - DataResult1D data = dataQueue.getData(requestId); + DataResult1D data = dataQueue->getData(requestId); if (data.id.empty()) { return; } diff --git a/multichartview.h b/multichartview.h index 0c04be2..deea1f6 100644 --- a/multichartview.h +++ b/multichartview.h @@ -87,15 +87,15 @@ class MultiChartView : public QWidget Q_OBJECT public: - explicit MultiChartView(QWidget *parent = 0); + explicit MultiChartView(DataQueue *queue, QWidget *parent = 0); ~MultiChartView(); void addArray(const nix::DataArray &array); void loadData(const ArrayInfo &info); private: + DataQueue *dataQueue; Ui::MultiChartView *ui; - DataQueue dataQueue; double xRangeMin, xRangeMax; std::map arrayMap; std::map chartMap;