Thread-safe ContentManagerModel::Downloads

This commit is contained in:
Veloman Yunkan 2024-03-01 19:46:17 +04:00
parent c042532a8c
commit 52b568d89a

View File

@ -5,6 +5,8 @@
#include <QModelIndex> #include <QModelIndex>
#include <QVariant> #include <QVariant>
#include <QIcon> #include <QIcon>
#include <QMutex>
#include <QMutexLocker>
#include "thumbnaildownloader.h" #include "thumbnaildownloader.h"
#include "rownode.h" #include "rownode.h"
#include <memory> #include <memory>
@ -30,23 +32,28 @@ public: // types
public: public:
void set(const QString& id, DownloadStatePtr d) { void set(const QString& id, DownloadStatePtr d) {
const QMutexLocker threadSafetyGuarantee(&mutex);
impl[id] = d; impl[id] = d;
} }
DownloadStatePtr value(const QString& id) const { DownloadStatePtr value(const QString& id) const {
const QMutexLocker threadSafetyGuarantee(&mutex);
return impl.value(id); return impl.value(id);
} }
QList<QString> keys() const { QList<QString> keys() const {
const QMutexLocker threadSafetyGuarantee(&mutex);
return impl.keys(); return impl.keys();
} }
void remove(const QString& id) { void remove(const QString& id) {
const QMutexLocker threadSafetyGuarantee(&mutex);
impl.remove(id); impl.remove(id);
} }
private: private:
ImplType impl; ImplType impl;
mutable QMutex mutex;
}; };