diff --git a/sources/awesome-widget/plugin/awdataaggregator.cpp b/sources/awesome-widget/plugin/awdataaggregator.cpp index 5c3f7ce..9beb1f0 100644 --- a/sources/awesome-widget/plugin/awdataaggregator.cpp +++ b/sources/awesome-widget/plugin/awdataaggregator.cpp @@ -69,9 +69,9 @@ QString AWDataAggregator::htmlImage(const QPixmap source) const QBuffer buffer(&byteArray); source.save(&buffer, "PNG"); - return byteArray.isEmpty() ? QString() - : QString(""). - arg(QString(byteArray.toBase64())); + return byteArray.isEmpty() + ? QString() + : QString("").arg(QString(byteArray.toBase64())); } diff --git a/sources/awesome-widget/plugin/awdataengineaggregator.cpp b/sources/awesome-widget/plugin/awdataengineaggregator.cpp index 873f0b4..60db3a8 100644 --- a/sources/awesome-widget/plugin/awdataengineaggregator.cpp +++ b/sources/awesome-widget/plugin/awdataengineaggregator.cpp @@ -19,8 +19,6 @@ #include -#include - #include "awdebug.h" #include "awkeys.h" @@ -30,16 +28,8 @@ AWDataEngineAggregator::AWDataEngineAggregator(QObject *parent, const int interv { qCDebug(LOG_AW); - // timer events - m_timer = new QTimer(this); - m_timer->setSingleShot(true); - setInterval(interval); initDataEngines(); - connectVisualization(); - - connect(this, SIGNAL(startTimer()), m_timer, SLOT(start())); - connect(m_timer, SIGNAL(timeout()), this, SLOT(connectVisualization())); } @@ -48,7 +38,6 @@ AWDataEngineAggregator::~AWDataEngineAggregator() qCDebug(LOG_AW); m_dataEngines.clear(); - if (m_timer != nullptr) delete m_timer; } @@ -58,33 +47,6 @@ void AWDataEngineAggregator::setInterval(const int _interval) qCDebug(LOG_AW) << "Interval" << _interval; m_interval = _interval; - m_timer->setInterval(5 * _interval); -} - - -void AWDataEngineAggregator::connectVisualization() -{ - qCDebug(LOG_AW); - -// reconnectSources(); - connect(this, SIGNAL(updateData(QString, QVariant, QString )), - parent(), SLOT(dataUpdated(QString, QVariant, QString))); - - return static_cast(parent())->unlock(); -} - - -void AWDataEngineAggregator::disconnectVisualization() -{ - qCDebug(LOG_AW); - - disconnect(this, SIGNAL(updateData(QString, QVariant, QString)), - parent(), SLOT(dataUpdated(QString, QVariant, QString))); -// m_dataEngines.clear(); - - // HACK run timer in the main thread since a timer could not be started from - // the different thread - return emit(startTimer()); } @@ -119,8 +81,9 @@ void AWDataEngineAggregator::dataUpdated(const QString sourceName, const Plasma: // HACK "deep copy" of data to avoid plasma crash on Data object destruction QString units = data[QString("units")].toString(); // HACK workaround for time values which are stored in the different path - QVariant value = sourceName == QString("Local") ? data[QString("DateTime")] - : data[QString("value")]; + QVariant value = sourceName == QString("Local") + ? data[QString("DateTime")] + : data[QString("value")]; emit(updateData(sourceName, value, units)); } @@ -141,4 +104,7 @@ void AWDataEngineAggregator::initDataEngines() static_cast(parent())->addDevice(source); m_dataEngines[QString("systemmonitor")]->connectSource(source, this, m_interval); }); + + connect(this, SIGNAL(updateData(QString, QVariant, QString)), + parent(), SLOT(dataUpdated(QString, QVariant, QString))); } diff --git a/sources/awesome-widget/plugin/awdataengineaggregator.h b/sources/awesome-widget/plugin/awdataengineaggregator.h index 10e6e15..f1ae2cb 100644 --- a/sources/awesome-widget/plugin/awdataengineaggregator.h +++ b/sources/awesome-widget/plugin/awdataengineaggregator.h @@ -23,8 +23,6 @@ #include -class QTimer; - class AWDataEngineAggregator : public QObject { Q_OBJECT @@ -37,13 +35,9 @@ public: void setInterval(const int _interval); signals: - void startTimer(); void updateData(const QString sourceName, const QVariant value, const QString units); public slots: - // additional methods to control this and visualization - void connectVisualization(); - void disconnectVisualization(); void dropSource(const QString source); void reconnectSources(); // data engines operations @@ -55,7 +49,6 @@ private: void initDataEngines(); QHash m_dataEngines; int m_interval; - QTimer *m_timer = nullptr; }; diff --git a/sources/awesome-widget/plugin/awkeys.cpp b/sources/awesome-widget/plugin/awkeys.cpp index 4774e23..857a4a7 100644 --- a/sources/awesome-widget/plugin/awkeys.cpp +++ b/sources/awesome-widget/plugin/awkeys.cpp @@ -49,7 +49,6 @@ AWKeys::AWKeys(QObject *parent) #ifdef BUILD_FUTURE // thread pool - m_queueLimit = 2 * QThread::idealThreadCount(); m_threadPool = new QThreadPool(this); #endif /* BUILD_FUTURE */ @@ -81,15 +80,6 @@ AWKeys::~AWKeys() } -void AWKeys::unlock() -{ - qCDebug(LOG_AW); - - qCWarning(LOG_AW) << "Unm_lock stream"; - m_lock = false; -} - - void AWKeys::initDataAggregator(const QVariantMap tooltipParams) { qCDebug(LOG_AW); @@ -115,9 +105,7 @@ void AWKeys::initKeys(const QString currentPattern, const int interval, const in } else dataEngineAggregator->setInterval(interval); #ifdef BUILD_FUTURE - int rawLimit = limit == 0 ? QThread::idealThreadCount() : limit; - m_queueLimit = 2 * rawLimit; - m_threadPool->setMaxThreadCount(rawLimit); + m_threadPool->setMaxThreadCount(limit == 0 ? QThread::idealThreadCount() : limit); #endif /* BUILD_FUTURE */ updateCache(); @@ -177,7 +165,7 @@ QStringList AWKeys::dictKeys(const bool sorted, const QString regexp) const // uptime allKeys.append(QString("uptime")); allKeys.append(QString("cuptime")); - // cpucm_lock & cpu + // cpuclock & cpu for (int i=QThread::idealThreadCount()-1; i>=0; i--) { allKeys.append(QString("cpucl%1").arg(i)); allKeys.append(QString("cpu%1").arg(i)); @@ -410,8 +398,6 @@ void AWKeys::dataUpdated(const QString sourceName, const QVariant value, const Q qCDebug(LOG_AW) << "Source" << sourceName; qCDebug(LOG_AW) << "Data" << value << units; - if (m_lock) - return; if (sourceName == QString("update")) return emit(needToBeUpdated()); @@ -714,15 +700,6 @@ void AWKeys::setDataBySource(const QString sourceName, const QVariant value, con qCDebug(LOG_AW) << "Source" << sourceName; qCDebug(LOG_AW) << "Data" << value << units; -#ifdef BUILD_FUTURE - // drop if limits are reached - if (++m_queue > m_queueLimit) { - qCWarning(LOG_AW) << "Messages m_queue" << m_queue-- << "more than limits" << m_queueLimit; - m_lock = true; - return dataEngineAggregator->disconnectVisualization(); - } -#endif /* BUILD_FUTURE */ - // first list init QStringList tags = aggregator->keysFromSource(sourceName); if (tags.isEmpty()) @@ -733,14 +710,14 @@ void AWKeys::setDataBySource(const QString sourceName, const QVariant value, con qCDebug(LOG_AW) << "Source" << sourceName << "not found"; emit(dropSourceFromDataengine(sourceName)); } else { +#ifdef BUILD_FUTURE m_mutex.lock(); +#endif /* BUILD_FUTURE */ std::for_each(tags.cbegin(), tags.cend(), [this, value](const QString tag) { values[tag] = aggregator->formater(value, tag); }); - m_mutex.unlock(); - } - #ifdef BUILD_FUTURE - m_queue--; + m_mutex.unlock(); #endif /* BUILD_FUTURE */ + } } diff --git a/sources/awesome-widget/plugin/awkeys.h b/sources/awesome-widget/plugin/awkeys.h index 103a10b..80f8cc3 100644 --- a/sources/awesome-widget/plugin/awkeys.h +++ b/sources/awesome-widget/plugin/awkeys.h @@ -47,7 +47,6 @@ public: const int limit); Q_INVOKABLE void setAggregatorProperty(const QString key, const QVariant value); Q_INVOKABLE void setWrapNewLines(const bool wrap = false); - Q_INVOKABLE void unlock(); Q_INVOKABLE void updateCache(); // keys Q_INVOKABLE QStringList dictKeys(const bool sorted = false, @@ -95,11 +94,9 @@ private: QString m_pattern; QHash values; bool m_wrapNewLines = false; - // queue and stream lock properties + // multithread features QThreadPool *m_threadPool = nullptr; QMutex m_mutex; - int m_queueLimit, m_queue = 0; - bool m_lock = true; };