diff --git a/src/plugins/cpptools/cpplocatordata.cpp b/src/plugins/cpptools/cpplocatordata.cpp index be2b948a96b..3154f66ddba 100644 --- a/src/plugins/cpptools/cpplocatordata.cpp +++ b/src/plugins/cpptools/cpplocatordata.cpp @@ -86,7 +86,6 @@ void CppLocatorData::onAboutToRemoveFiles(const QStringList &files) void CppLocatorData::flushPendingDocument(bool force) const { // TODO: move this off the UI thread and into a future. - QMutexLocker locker(&m_pendingDocumentsMutex); if (!force && m_pendingDocuments.size() < MaxPendingDocuments) return; if (m_pendingDocuments.isEmpty()) @@ -98,12 +97,3 @@ void CppLocatorData::flushPendingDocument(bool force) const m_pendingDocuments.clear(); m_pendingDocuments.reserve(MaxPendingDocuments); } - -QList CppLocatorData::allIndexItems( - const QHash> &items) const -{ - QList result; - for (const QList &subItems : items) - result.append(subItems); - return result; -} diff --git a/src/plugins/cpptools/cpplocatordata.h b/src/plugins/cpptools/cpplocatordata.h index b41bce07bfb..f8c853471f6 100644 --- a/src/plugins/cpptools/cpplocatordata.h +++ b/src/plugins/cpptools/cpplocatordata.h @@ -46,8 +46,8 @@ class CppLocatorData : public QObject public: void filterAllFiles(IndexItem::Visitor func) const { - flushPendingDocument(true); QMutexLocker locker(&m_pendingDocumentsMutex); + flushPendingDocument(true); QHash infosByFile = m_infosByFile; locker.unlock(); for (auto i = infosByFile.constBegin(), ei = infosByFile.constEnd(); i != ei; ++i) @@ -60,13 +60,13 @@ public slots: void onAboutToRemoveFiles(const QStringList &files); private: + // Ensure to protect every call to this method with m_pendingDocumentsMutex void flushPendingDocument(bool force) const; - QList allIndexItems(const QHash> &items) const; mutable SearchSymbols m_search; mutable QHash m_infosByFile; - mutable QRecursiveMutex m_pendingDocumentsMutex; + mutable QMutex m_pendingDocumentsMutex; mutable QVector m_pendingDocuments; };