diff options
author | Jarek Kobus <jaroslaw.kobus@qt.io> | 2021-09-29 11:42:07 +0200 |
---|---|---|
committer | Jarek Kobus <jaroslaw.kobus@qt.io> | 2021-09-29 12:15:23 +0000 |
commit | b798fce4654739b59b2ca11e5d30123bfb2ca209 (patch) | |
tree | e5b1593eca7e02737b9508efa0e3982c1fdac2e2 | |
parent | 34cdffa89b5640f1184b7c1becf6228fdcd23649 (diff) |
Don't call TaskHub::addTask() directly from non-main thread
Fixes: QTCREATORBUG-26335
Change-Id: I23323edd32fa1f8d5d49943e3b4c37a305e53dd2
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
-rw-r--r-- | src/plugins/projectexplorer/taskhub.cpp | 1 | ||||
-rw-r--r-- | src/plugins/qtsupport/profilereader.cpp | 17 |
2 files changed, 13 insertions, 5 deletions
diff --git a/src/plugins/projectexplorer/taskhub.cpp b/src/plugins/projectexplorer/taskhub.cpp index 856959ed0a..1912264bb5 100644 --- a/src/plugins/projectexplorer/taskhub.cpp +++ b/src/plugins/projectexplorer/taskhub.cpp @@ -155,6 +155,7 @@ void TaskHub::addTask(Task task) QTC_ASSERT(!task.description().isEmpty(), return); QTC_ASSERT(!task.isNull(), return); QTC_ASSERT(task.m_mark.isNull(), return); + QTC_ASSERT(QThread::currentThread() == qApp->thread(), return); if (task.file.isEmpty() || task.line <= 0) task.line = -1; diff --git a/src/plugins/qtsupport/profilereader.cpp b/src/plugins/qtsupport/profilereader.cpp index cdc77c2d9b..905ad413ea 100644 --- a/src/plugins/qtsupport/profilereader.cpp +++ b/src/plugins/qtsupport/profilereader.cpp @@ -58,15 +58,22 @@ ProMessageHandler::~ProMessageHandler() Core::MessageManager::writeFlashing(m_messages); } - +static void addTask(Task::TaskType type, + const QString &description, + const Utils::FilePath &file = {}, + int line = -1) +{ + QMetaObject::invokeMethod(TaskHub::instance(), [=]() { + TaskHub::addTask(BuildSystemTask(type, description, file, line)); + }); +} void ProMessageHandler::message(int type, const QString &msg, const QString &fileName, int lineNo) { if ((type & CategoryMask) == ErrorMessage && ((type & SourceMask) == SourceParser || m_verbose)) { // parse error in qmake files if (m_exact) { - TaskHub::addTask( - BuildSystemTask(Task::Error, msg, Utils::FilePath::fromString(fileName), lineNo)); + addTask(Task::Error, msg, Utils::FilePath::fromString(fileName), lineNo); } else { appendMessage(format(fileName, lineNo, msg)); } @@ -79,9 +86,9 @@ void ProMessageHandler::fileMessage(int type, const QString &msg) if (!m_verbose) return; if (m_exact && type == QMakeHandler::ErrorMessage) - TaskHub::addTask(BuildSystemTask(Task::Error, msg)); + addTask(Task::Error, msg); else if (m_exact && type == QMakeHandler::WarningMessage) - TaskHub::addTask(BuildSystemTask(Task::Warning, msg)); + addTask(Task::Warning, msg); else appendMessage(msg); } |