Commit f49a8595 authored by Christian Kamm's avatar Christian Kamm
Browse files

QmlJS: Compute link in SemanticHightlighter thread instead of lazily.

It's used very often, so lazy computation (potentially in the gui
thread) was too expensive.

Reviewed-by: Kai Koehne
parent 32bb7bff
......@@ -556,13 +556,6 @@ QList<AST::Node *> SemanticInfo::astPath(int cursorPosition) const
LookupContext::Ptr SemanticInfo::lookupContext(const QList<QmlJS::AST::Node *> &path) const
{
// create and link context if necessary
if (!m_context) {
Interpreter::Context *ctx = new Interpreter::Context;
Link link(ctx, document, snapshot, ModelManagerInterface::instance()->importPaths());
m_context = QSharedPointer<const QmlJS::Interpreter::Context>(ctx);
}
return LookupContext::create(document, snapshot, *m_context, path);
}
......@@ -1896,6 +1889,10 @@ SemanticInfo SemanticHighlighter::semanticInfo(const Source &source)
semanticInfo.snapshot = snapshot;
semanticInfo.document = doc;
Interpreter::Context *ctx = new Interpreter::Context;
Link link(ctx, doc, snapshot, ModelManagerInterface::instance()->importPaths());
semanticInfo.m_context = QSharedPointer<const QmlJS::Interpreter::Context>(ctx);
QStringList importPaths;
if (m_modelManager)
importPaths = m_modelManager->importPaths();
......
......@@ -114,6 +114,8 @@ public: // attributes
QTextCursor end;
};
class SemanticHighlighter;
class SemanticInfo
{
public:
......@@ -145,8 +147,9 @@ public: // attributes
QList<QmlJS::DiagnosticMessage> semanticMessages;
private:
// created lazily
mutable QSharedPointer<const QmlJS::Interpreter::Context> m_context;
QSharedPointer<const QmlJS::Interpreter::Context> m_context;
friend class SemanticHighlighter;
};
class SemanticHighlighter: public QThread
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment