diff --git a/src/services/abstract/feed.cpp b/src/services/abstract/feed.cpp index a5d110c04..6e0f35ea5 100755 --- a/src/services/abstract/feed.cpp +++ b/src/services/abstract/feed.cpp @@ -160,6 +160,9 @@ void Feed::run() { << customId() << " in thread: \'" << QThread::currentThreadId() << "\'."; + // Save all cached data first. + getParentServiceRoot()->saveAllCachedData(); + bool error_during_obtaining; QList msgs = obtainNewMessages(&error_during_obtaining); diff --git a/src/services/owncloud/owncloudserviceroot.cpp b/src/services/owncloud/owncloudserviceroot.cpp index 5d5159924..68c0654e5 100755 --- a/src/services/owncloud/owncloudserviceroot.cpp +++ b/src/services/owncloud/owncloudserviceroot.cpp @@ -135,13 +135,14 @@ void OwnCloudServiceRoot::addMessageStatesToCache(const QStringList &ids_of_mess } void OwnCloudServiceRoot::saveAllCachedData() { + m_cacheSaveMutex->lock(); + if (m_cachedStatesRead.isEmpty() && m_cachedStatesImportant.isEmpty()) { // No cached changes. + m_cacheSaveMutex->unlock(); return; } - m_cacheSaveMutex->lock(); - // Make copy of changes. QMap cached_data_read = m_cachedStatesRead; cached_data_read.detach();