diff --git a/src/plugins/projectexplorer/taskhub.cpp b/src/plugins/projectexplorer/taskhub.cpp index 856959ed0a2..1912264bb5f 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 cdc77c2d9b8..905ad413eaf 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); }