aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJarek Kobus <jaroslaw.kobus@qt.io>2021-09-29 11:42:07 +0200
committerJarek Kobus <jaroslaw.kobus@qt.io>2021-09-29 12:15:23 +0000
commitb798fce4654739b59b2ca11e5d30123bfb2ca209 (patch)
treee5b1593eca7e02737b9508efa0e3982c1fdac2e2
parent34cdffa89b5640f1184b7c1becf6228fdcd23649 (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.cpp1
-rw-r--r--src/plugins/qtsupport/profilereader.cpp17
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);
}