diff --git a/src/certificatemodel.cpp b/src/certificatemodel.cpp index 4a4e1a73d2c88fe096d5368b15446344e867981a..543e1d868be790340da26ca643c33f74dd5dbc9d 100644 --- a/src/certificatemodel.cpp +++ b/src/certificatemodel.cpp @@ -629,7 +629,11 @@ Certificate* CertificateModel::getCertificateFromPath(const QString& path, Accou if (!cert) { cert = new Certificate(path, Certificate::Type::NONE); cert->setCollection(m_pFallbackDaemonCollection); + + { // mutex + QMutexLocker(&d_ptr->m_CertInsertion); d_ptr->m_hCertificates[path.toLatin1()] = cert; + } // mutex //Add it to the model d_ptr->addToTree(cert,a); @@ -656,7 +660,11 @@ Certificate* CertificateModel::getCertificateFromPath(const QString& path, Certi if (!cert) { cert = new Certificate(path, type); cert->setCollection(m_pFallbackDaemonCollection); + + { // mutex + QMutexLocker(&d_ptr->m_CertInsertion); d_ptr->m_hCertificates[path.toLatin1()] = cert; + } // mutex //Add it to the model d_ptr->addToTree(cert); @@ -672,7 +680,11 @@ Certificate* CertificateModel::getCertificateFromId(const QString& id, Account* //The certificate is not loaded yet if (!cert) { cert = new Certificate(id); + + { // mutex + QMutexLocker(&d_ptr->m_CertInsertion); d_ptr->m_hCertificates[id.toLatin1()] = cert; + } // mutex if ((!a) && (!category.isEmpty())) { CertificateNode* cat = d_ptr->m_hStrToCat.value(category); diff --git a/src/private/certificatemodel_p.h b/src/private/certificatemodel_p.h index 163e84e7d2f6b4f800c89593b39b9591ba435215..c0ff21aca709d74a2de30119cccbba84e0b81b7e 100644 --- a/src/private/certificatemodel_p.h +++ b/src/private/certificatemodel_p.h @@ -57,6 +57,7 @@ public: QHash<QString,Certificate*> m_hCertificates ; CertificateNode* m_pDefaultCategory ; QMutex m_CertLoader ; + QMutex m_CertInsertion ; int m_GroupCounter ; QHash<const Account*,CertificateNode*> m_hAccToCat ; QHash<const QString&,CertificateNode*> m_hStrToCat ;