From 903abcf5149b22a0ab342756687ddad077bb78ad Mon Sep 17 00:00:00 2001 From: Mathew Sutcliffe Date: Tue, 28 Jun 2016 19:57:17 +0100 Subject: [PATCH] refs #679 CApplication shall ensure CSettingsCache relay signal is connected when context is not available. --- src/blackcore/application.cpp | 9 +++++++++ src/blackmisc/valuecache.cpp | 4 ++++ 2 files changed, 13 insertions(+) diff --git a/src/blackcore/application.cpp b/src/blackcore/application.cpp index 0c640a7ea..494de646e 100644 --- a/src/blackcore/application.cpp +++ b/src/blackcore/application.cpp @@ -207,6 +207,15 @@ namespace BlackCore bool s = this->startHookIn(); + // enable local relay of settings changes in case there is no context + if (!this->supportsContexts()) + { + connect(CSettingsCache::instance(), &CSettingsCache::valuesChangedByLocal, CSettingsCache::instance(), [](const CValueCachePacket & values) + { + CSettingsCache::instance()->changeValuesFromRemote(values, CIdentifier()); + }); + } + // trigger loading and saving of settings in appropriate scenarios if (this->m_coreFacadeConfig.getModeApplication() != CCoreFacadeConfig::Remote) { diff --git a/src/blackmisc/valuecache.cpp b/src/blackmisc/valuecache.cpp index c53e77701..7cbd3f11a 100644 --- a/src/blackmisc/valuecache.cpp +++ b/src/blackmisc/valuecache.cpp @@ -26,6 +26,7 @@ #include #include #include +#include #include #include #include @@ -240,6 +241,9 @@ namespace BlackMisc } if (values.valuesChanged()) { emit valuesChanged(values, sender()); } emit valuesChangedByLocal(values); + + Q_ASSERT_X(isSignalConnected(QMetaMethod::fromSignal(&CValueCache::valuesChangedByLocal)), Q_FUNC_INFO, + "signal must be connected for cache to function properly"); } void CValueCache::changeValuesFromRemote(const CValueCachePacket &values, const CIdentifier &originator)