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.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;
|
||||||
|
@@ -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);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user