qmljslocatordata: make access to m_entries threadsafe

Change-Id: I0eb052a98b2240c17dec81974c226b107705c9e4
Reviewed-by: Eike Ziller <eike.ziller@digia.com>
This commit is contained in:
Fawzi Mohamed
2014-09-19 13:57:20 +02:00
parent de70de2246
commit d0e6da689b
2 changed files with 6 additions and 0 deletions

View File

@@ -35,6 +35,7 @@
#include <qmljs/parser/qmljsast_p.h> #include <qmljs/parser/qmljsast_p.h>
#include <QFileInfo> #include <QFileInfo>
#include <QMutexLocker>
using namespace QmlJSTools::Internal; using namespace QmlJSTools::Internal;
using namespace QmlJS; using namespace QmlJS;
@@ -180,17 +181,20 @@ protected:
QHash<QString, QList<LocatorData::Entry> > LocatorData::entries() const QHash<QString, QList<LocatorData::Entry> > LocatorData::entries() const
{ {
QMutexLocker l(&m_mutex);
return m_entries; return m_entries;
} }
void LocatorData::onDocumentUpdated(const QmlJS::Document::Ptr &doc) void LocatorData::onDocumentUpdated(const QmlJS::Document::Ptr &doc)
{ {
QList<Entry> entries = FunctionFinder().run(doc); QList<Entry> entries = FunctionFinder().run(doc);
QMutexLocker l(&m_mutex);
m_entries.insert(doc->fileName(), entries); m_entries.insert(doc->fileName(), entries);
} }
void LocatorData::onAboutToRemoveFiles(const QStringList &files) void LocatorData::onAboutToRemoveFiles(const QStringList &files)
{ {
QMutexLocker l(&m_mutex);
foreach (const QString &file, files) { foreach (const QString &file, files) {
m_entries.remove(file); m_entries.remove(file);
} }

View File

@@ -34,6 +34,7 @@
#include <QObject> #include <QObject>
#include <QHash> #include <QHash>
#include <QMutex>
namespace QmlJSTools { namespace QmlJSTools {
namespace Internal { namespace Internal {
@@ -69,6 +70,7 @@ private slots:
void onAboutToRemoveFiles(const QStringList &files); void onAboutToRemoveFiles(const QStringList &files);
private: private:
mutable QMutex m_mutex;
QHash<QString, QList<Entry> > m_entries; QHash<QString, QList<Entry> > m_entries;
}; };