From 7a4367734b67a748c3d86644e0e795ff3b6b0afa Mon Sep 17 00:00:00 2001 From: Evgenii Alekseev Date: Wed, 28 Jan 2026 13:50:00 +0200 Subject: [PATCH] fix: check if subscription optimisation is enabled explicitly Previous implementation has used implicit logic with empty keys arrays, which might lead to some errors in processing --- sources/awesome-widget/plugin/awdataenginemapper.cpp | 4 ++-- sources/awesome-widget/plugin/awdataenginemapper.h | 3 ++- sources/awesome-widget/plugin/awkeys.cpp | 7 +++---- sources/awesome-widget/plugin/awkeysaggregator.cpp | 4 ++-- sources/awesome-widget/plugin/awkeysaggregator.h | 3 ++- sources/extsysmonsources/systeminfosource.cpp | 4 ++-- 6 files changed, 13 insertions(+), 12 deletions(-) diff --git a/sources/awesome-widget/plugin/awdataenginemapper.cpp b/sources/awesome-widget/plugin/awdataenginemapper.cpp index 92b2d46..ed46924 100644 --- a/sources/awesome-widget/plugin/awdataenginemapper.cpp +++ b/sources/awesome-widget/plugin/awdataenginemapper.cpp @@ -65,7 +65,7 @@ QStringList AWDataEngineMapper::keysFromSource(const QString &_source) const // HACK units required to define should the value be calculated as temperature // or fan data QStringList AWDataEngineMapper::registerSource(const QString &_source, const KSysGuard::Unit _units, - const QStringList &_keys) + const QStringList &_keys, const bool _disconnectUnused) { qCDebug(LOG_AW) << "Source" << _source << "with units" << _units; @@ -91,7 +91,7 @@ QStringList AWDataEngineMapper::registerSource(const QString &_source, const KSy // check if keys were actually requested qCInfo(LOG_AW) << "Looking for keys" << keys << "in" << _keys; - auto required = _keys.isEmpty() + auto required = !_disconnectUnused || std::any_of(keys.cbegin(), keys.cend(), [&_keys](auto &key) { return _keys.contains(key); }); if (!required) return {}; diff --git a/sources/awesome-widget/plugin/awdataenginemapper.h b/sources/awesome-widget/plugin/awdataenginemapper.h index 8a069e1..7708ec6 100644 --- a/sources/awesome-widget/plugin/awdataenginemapper.h +++ b/sources/awesome-widget/plugin/awdataenginemapper.h @@ -39,7 +39,8 @@ public: [[nodiscard]] AWPluginFormaterInterface *formatter(const QString &_key) const; [[nodiscard]] QStringList keysFromSource(const QString &_source) const; // set methods - QStringList registerSource(const QString &_source, KSysGuard::Unit _units, const QStringList &_keys); + QStringList registerSource(const QString &_source, KSysGuard::Unit _units, const QStringList &_keys, + const bool _disconnectUnused); void setDevices(const AWPluginMatcherSettings &_settings); private: diff --git a/sources/awesome-widget/plugin/awkeys.cpp b/sources/awesome-widget/plugin/awkeys.cpp index 18bedf9..4b11db2 100644 --- a/sources/awesome-widget/plugin/awkeys.cpp +++ b/sources/awesome-widget/plugin/awkeys.cpp @@ -206,9 +206,8 @@ void AWKeys::reinitKeys(const QStringList &_currentKeys) barKeys.append(item->usedKeys()); } // get required keys - m_requiredKeys = m_optimize ? AWKeyCache::getRequiredKeys(m_foundKeys, barKeys, m_tooltipParams, - m_keyOperator->requiredUserKeys(), _currentKeys) - : QStringList(); + m_requiredKeys = AWKeyCache::getRequiredKeys(m_foundKeys, barKeys, m_tooltipParams, + m_keyOperator->requiredUserKeys(), _currentKeys); // set key data to m_aggregator m_aggregator->setDevices(m_keyOperator->devices()); @@ -317,7 +316,7 @@ void AWKeys::setDataBySource(const QString &_source, const KSysGuard::SensorInfo // first list init auto tags = m_aggregator->keysFromSource(_source); if (tags.isEmpty()) - tags = m_aggregator->registerSource(_source, _sensor.unit, m_requiredKeys); + tags = m_aggregator->registerSource(_source, _sensor.unit, m_requiredKeys, m_optimize); // update data or drop source if there are no matches and exit if (tags.isEmpty()) { diff --git a/sources/awesome-widget/plugin/awkeysaggregator.cpp b/sources/awesome-widget/plugin/awkeysaggregator.cpp index 3a02fce..fa5acd9 100644 --- a/sources/awesome-widget/plugin/awkeysaggregator.cpp +++ b/sources/awesome-widget/plugin/awkeysaggregator.cpp @@ -151,9 +151,9 @@ void AWKeysAggregator::setTranslate(const bool _translate) QStringList AWKeysAggregator::registerSource(const QString &_source, const KSysGuard::Unit _units, - const QStringList &_keys) + const QStringList &_keys, const bool _disconnectUnused) { qCDebug(LOG_AW) << "Source" << _source << "with units" << _units; - return m_mapper->registerSource(_source, _units, _keys); + return m_mapper->registerSource(_source, _units, _keys, _disconnectUnused); } diff --git a/sources/awesome-widget/plugin/awkeysaggregator.h b/sources/awesome-widget/plugin/awkeysaggregator.h index 95d81a1..9cfe539 100644 --- a/sources/awesome-widget/plugin/awkeysaggregator.h +++ b/sources/awesome-widget/plugin/awkeysaggregator.h @@ -61,7 +61,8 @@ public: void setTranslate(bool _translate); public slots: - QStringList registerSource(const QString &_source, KSysGuard::Unit _units, const QStringList &_keys); + QStringList registerSource(const QString &_source, KSysGuard::Unit _units, const QStringList &_keys, + const bool _disconnectUnused); private: AWPluginFormatSettings m_settings; diff --git a/sources/extsysmonsources/systeminfosource.cpp b/sources/extsysmonsources/systeminfosource.cpp index 7642b85..3861c29 100644 --- a/sources/extsysmonsources/systeminfosource.cpp +++ b/sources/extsysmonsources/systeminfosource.cpp @@ -128,8 +128,8 @@ QVariant SystemInfoSource::sendDBusRequest(const QString &_destination, const QS auto response = bus.call(request, QDBus::BlockWithGui, REQUEST_TIMEOUT); - if ((response.type() != QDBusMessage::ReplyMessage) || (response.arguments().isEmpty())) { - qCWarning(LOG_ESS) << "Error message" << response.errorMessage(); + if (response.type() != QDBusMessage::ReplyMessage || response.arguments().isEmpty()) { + qCWarning(LOG_ESS) << "Error" << response.errorName() << "with message" << response.errorMessage(); return {}; } else { return response.arguments().first();