diff options
author | Nikolai Kosjar <nikolai.kosjar@qt.io> | 2018-11-15 15:08:44 +0100 |
---|---|---|
committer | Nikolai Kosjar <nikolai.kosjar@qt.io> | 2018-11-15 14:55:12 +0000 |
commit | 7ef2dccff806e0b32a99973fdf357f2ad6552f4c (patch) | |
tree | 2d123e1c6cb68cd588792639ad996c70c6636d27 | |
parent | 03bda2aee8202af3b3dd916bcbedad4baf5ca272 (diff) | |
download | qt-creator-7ef2dccff806e0b32a99973fdf357f2ad6552f4c.tar.gz |
CppTools: Fix thread-unsafe call to MessageManager::write()
The Preprocessor running in a worker thread can call this function.
Fixes: QTCREATORBUG-21481
Change-Id: I4970379fbabae23cfa3d7c1222e81a4ae8c3e6ad
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
Reviewed-by: Marco Bubke <marco.bubke@qt.io>
-rw-r--r-- | src/plugins/cpptools/cpptoolsreuse.cpp | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/src/plugins/cpptools/cpptoolsreuse.cpp b/src/plugins/cpptools/cpptoolsreuse.cpp index be30a6e3a2..944196f938 100644 --- a/src/plugins/cpptools/cpptoolsreuse.cpp +++ b/src/plugins/cpptools/cpptoolsreuse.cpp @@ -258,7 +258,20 @@ bool fileSizeExceedsLimit(const QFileInfo &fileInfo, int sizeLimitInMb) "CppIndexer", "C++ Indexer: Skipping file \"%1\" because it is too big.") .arg(absoluteFilePath); - Core::MessageManager::write(msg, Core::MessageManager::Silent); + +#if (QT_VERSION >= QT_VERSION_CHECK(5, 10, 0)) + QMetaObject::invokeMethod(Core::MessageManager::instance(), [msg]() { + Core::MessageManager::write(msg, Core::MessageManager::Silent); + }); +#else + QMetaObject::invokeMethod(Core::MessageManager::instance(), + "write", + Qt::QueuedConnection, + Q_ARG(QString, msg), + Q_ARG(Core::MessageManager::PrintToOutputPaneFlags, + Core::MessageManager::Silent)); +#endif + qWarning().noquote() << msg; return true; } |