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>
This commit is contained in:
Jarek Kobus
2021-09-29 11:42:07 +02:00
parent 34cdffa89b
commit b798fce465
2 changed files with 13 additions and 5 deletions

View File

@@ -155,6 +155,7 @@ void TaskHub::addTask(Task task)
QTC_ASSERT(!task.description().isEmpty(), return); QTC_ASSERT(!task.description().isEmpty(), return);
QTC_ASSERT(!task.isNull(), return); QTC_ASSERT(!task.isNull(), return);
QTC_ASSERT(task.m_mark.isNull(), return); QTC_ASSERT(task.m_mark.isNull(), return);
QTC_ASSERT(QThread::currentThread() == qApp->thread(), return);
if (task.file.isEmpty() || task.line <= 0) if (task.file.isEmpty() || task.line <= 0)
task.line = -1; task.line = -1;

View File

@@ -58,15 +58,22 @@ ProMessageHandler::~ProMessageHandler()
Core::MessageManager::writeFlashing(m_messages); 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) void ProMessageHandler::message(int type, const QString &msg, const QString &fileName, int lineNo)
{ {
if ((type & CategoryMask) == ErrorMessage && ((type & SourceMask) == SourceParser || m_verbose)) { if ((type & CategoryMask) == ErrorMessage && ((type & SourceMask) == SourceParser || m_verbose)) {
// parse error in qmake files // parse error in qmake files
if (m_exact) { if (m_exact) {
TaskHub::addTask( addTask(Task::Error, msg, Utils::FilePath::fromString(fileName), lineNo);
BuildSystemTask(Task::Error, msg, Utils::FilePath::fromString(fileName), lineNo));
} else { } else {
appendMessage(format(fileName, lineNo, msg)); appendMessage(format(fileName, lineNo, msg));
} }
@@ -79,9 +86,9 @@ void ProMessageHandler::fileMessage(int type, const QString &msg)
if (!m_verbose) if (!m_verbose)
return; return;
if (m_exact && type == QMakeHandler::ErrorMessage) if (m_exact && type == QMakeHandler::ErrorMessage)
TaskHub::addTask(BuildSystemTask(Task::Error, msg)); addTask(Task::Error, msg);
else if (m_exact && type == QMakeHandler::WarningMessage) else if (m_exact && type == QMakeHandler::WarningMessage)
TaskHub::addTask(BuildSystemTask(Task::Warning, msg)); addTask(Task::Warning, msg);
else else
appendMessage(msg); appendMessage(msg);
} }