diff --git a/src/blackcore/datacache.cpp b/src/blackcore/datacache.cpp index 5f71af7fe..852afced1 100644 --- a/src/blackcore/datacache.cpp +++ b/src/blackcore/datacache.cpp @@ -27,9 +27,10 @@ namespace BlackCore } connect(this, &CValueCache::valuesChangedByLocal, this, &CDataCache::saveToStore); + connect(&m_watcher, &QFileSystemWatcher::fileChanged, this, [this] { loadFromStore(); }); - connect(&m_reloadTimer, &QTimer::timeout, this, [this]() { loadFromStore(); }); - m_reloadTimer.start(1000); + if (! QFile::exists(m_revisionFileName)) { QFile(m_revisionFileName).open(QFile::WriteOnly); } + m_watcher.addPath(m_revisionFileName); loadFromStore(); } diff --git a/src/blackcore/datacache.h b/src/blackcore/datacache.h index 9957c139d..c87d16b2c 100644 --- a/src/blackcore/datacache.h +++ b/src/blackcore/datacache.h @@ -15,7 +15,7 @@ #include "blackcore/blackcoreexport.h" #include "blackmisc/valuecache.h" #include -#include +#include namespace BlackCore { @@ -46,7 +46,7 @@ namespace BlackCore //! \param defer Whether to defer applying the changes. Used when called by saveToStore. void loadFromStore(bool lock = true, bool defer = false); - QTimer m_reloadTimer; + QFileSystemWatcher m_watcher; QUuid m_revision; const QString m_revisionFileName { persistentStore() + "/.rev" }; BlackMisc::CVariantMap m_deferredChanges;