forked from qt-creator/qt-creator
qmljslocatordata: make access to m_entries threadsafe
Change-Id: I0eb052a98b2240c17dec81974c226b107705c9e4 Reviewed-by: Eike Ziller <eike.ziller@digia.com>
This commit is contained in:
@@ -35,6 +35,7 @@
|
||||
#include <qmljs/parser/qmljsast_p.h>
|
||||
|
||||
#include <QFileInfo>
|
||||
#include <QMutexLocker>
|
||||
|
||||
using namespace QmlJSTools::Internal;
|
||||
using namespace QmlJS;
|
||||
@@ -180,17 +181,20 @@ protected:
|
||||
|
||||
QHash<QString, QList<LocatorData::Entry> > LocatorData::entries() const
|
||||
{
|
||||
QMutexLocker l(&m_mutex);
|
||||
return m_entries;
|
||||
}
|
||||
|
||||
void LocatorData::onDocumentUpdated(const QmlJS::Document::Ptr &doc)
|
||||
{
|
||||
QList<Entry> entries = FunctionFinder().run(doc);
|
||||
QMutexLocker l(&m_mutex);
|
||||
m_entries.insert(doc->fileName(), entries);
|
||||
}
|
||||
|
||||
void LocatorData::onAboutToRemoveFiles(const QStringList &files)
|
||||
{
|
||||
QMutexLocker l(&m_mutex);
|
||||
foreach (const QString &file, files) {
|
||||
m_entries.remove(file);
|
||||
}
|
||||
|
||||
@@ -34,6 +34,7 @@
|
||||
|
||||
#include <QObject>
|
||||
#include <QHash>
|
||||
#include <QMutex>
|
||||
|
||||
namespace QmlJSTools {
|
||||
namespace Internal {
|
||||
@@ -69,6 +70,7 @@ private slots:
|
||||
void onAboutToRemoveFiles(const QStringList &files);
|
||||
|
||||
private:
|
||||
mutable QMutex m_mutex;
|
||||
QHash<QString, QList<Entry> > m_entries;
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user