diff options
author | Jarek Kobus <jaroslaw.kobus@qt.io> | 2021-06-21 13:51:55 +0200 |
---|---|---|
committer | Jarek Kobus <jaroslaw.kobus@qt.io> | 2021-06-21 12:22:08 +0000 |
commit | ca09774181af618f440bffe059166a9f7cadb50f (patch) | |
tree | 03737c4a51bd5530e4472e7193f6ac323d2eb557 /src/libs/qmljs/qmljslink.cpp | |
parent | 54f3232f63d835ef0c17aa195a64c0b248afc759 (diff) | |
download | qt-creator-ca09774181af618f440bffe059166a9f7cadb50f.tar.gz |
Add more thread safety to ModelManagerInterface
Add ModelManagerInterface *ModelManagerInterface::instanceForFuture()
method. If the returned instance is not null, it's guaranteed
that it will be valid at least as long as the passed QFuture object
isn't finished.
Use instanceForFuture() in Link c'tor, as it's called from
non-gui thread.
Change-Id: I7e5ee6ad27e8f71cc0cef7fd9a91b710e2f8f662
Reviewed-by: Fawzi Mohamed <fawzi.mohamed@qt.io>
Diffstat (limited to 'src/libs/qmljs/qmljslink.cpp')
-rw-r--r-- | src/libs/qmljs/qmljslink.cpp | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/src/libs/qmljs/qmljslink.cpp b/src/libs/qmljs/qmljslink.cpp index 121fee3301..4fcdb0a748 100644 --- a/src/libs/qmljs/qmljslink.cpp +++ b/src/libs/qmljs/qmljslink.cpp @@ -150,7 +150,9 @@ Link::Link(const Snapshot &snapshot, const ViewerContext &vContext, const Librar d->diagnosticMessages = nullptr; d->allDiagnosticMessages = nullptr; - ModelManagerInterface *modelManager = ModelManagerInterface::instance(); + QFutureInterface<void> fi; + fi.reportStarted(); + ModelManagerInterface *modelManager = ModelManagerInterface::instanceForFuture(fi.future()); if (modelManager) { const ModelManagerInterface::CppDataHash cppDataHash = modelManager->cppData(); { @@ -176,6 +178,7 @@ Link::Link(const Snapshot &snapshot, const ViewerContext &vContext, const Librar } d->m_valueOwner->cppQmlTypes().setCppContextProperties(cppContextProperties); } + fi.reportFinished(); } ContextPtr Link::operator()(QHash<QString, QList<DiagnosticMessage> > *messages) |