forked from qt-creator/qt-creator
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:
@@ -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;
|
||||
|
@@ -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);
|
||||
}
|
||||
|
Reference in New Issue
Block a user