diff --git a/src/gui/macOS/fileproviderservice.h b/src/gui/macOS/fileproviderservice.h index 583f197adefcf..98fe8ba9334ff 100644 --- a/src/gui/macOS/fileproviderservice.h +++ b/src/gui/macOS/fileproviderservice.h @@ -7,6 +7,7 @@ #include #include +#include #include "libsync/account.h" #include "libsync/syncresult.h" @@ -62,6 +63,7 @@ class FileProviderService : public QObject class MacImplementation; std::unique_ptr d; + mutable QReadWriteLock _syncStatusLock; QHash _latestReceivedSyncStatus; }; diff --git a/src/gui/macOS/fileproviderservice.mm b/src/gui/macOS/fileproviderservice.mm index daeaabd69f6c3..c3643d36d9c1f 100644 --- a/src/gui/macOS/fileproviderservice.mm +++ b/src/gui/macOS/fileproviderservice.mm @@ -9,6 +9,8 @@ #import "AppProtocol.h" #include +#include +#include #include "accountmanager.h" @@ -119,11 +121,13 @@ - (void)reportSyncStatus:(NSString *)status forDomainIdentifier:(NSString *)doma SyncResult::Status FileProviderService::latestReceivedSyncStatusForAccount(const AccountPtr &account) const { Q_ASSERT(account); + QReadLocker locker(&_syncStatusLock); return _latestReceivedSyncStatus.value(account->userIdAtHostWithPort(), SyncResult::Undefined); } void FileProviderService::setLatestReceivedSyncStatus(const QString &userId, SyncResult::Status status) { + QWriteLocker locker(&_syncStatusLock); _latestReceivedSyncStatus.insert(userId, status); }