Merge pull request #7793 from spycrab/logging_async
Qt/LogWidget: Make logging asynchronous
This commit is contained in:
commit
e030a48741
|
@ -20,6 +20,7 @@
|
||||||
|
|
||||||
#include "Core/ConfigManager.h"
|
#include "Core/ConfigManager.h"
|
||||||
|
|
||||||
|
#include "DolphinQt/QtUtils/QueueOnObject.h"
|
||||||
#include "DolphinQt/Settings.h"
|
#include "DolphinQt/Settings.h"
|
||||||
|
|
||||||
// Delay in ms between calls of UpdateLog()
|
// Delay in ms between calls of UpdateLog()
|
||||||
|
@ -188,35 +189,40 @@ void LogWidget::SaveSettings()
|
||||||
|
|
||||||
void LogWidget::Log(LogTypes::LOG_LEVELS level, const char* text)
|
void LogWidget::Log(LogTypes::LOG_LEVELS level, const char* text)
|
||||||
{
|
{
|
||||||
std::lock_guard<std::mutex> lock(m_log_mutex);
|
// The text has to be copied here as it will be deallocated after this method has returned
|
||||||
|
|
||||||
const char* color = "white";
|
|
||||||
|
|
||||||
switch (level)
|
|
||||||
{
|
|
||||||
case LogTypes::LOG_LEVELS::LERROR:
|
|
||||||
color = "red";
|
|
||||||
break;
|
|
||||||
case LogTypes::LOG_LEVELS::LWARNING:
|
|
||||||
color = "yellow";
|
|
||||||
break;
|
|
||||||
case LogTypes::LOG_LEVELS::LNOTICE:
|
|
||||||
color = "lime";
|
|
||||||
break;
|
|
||||||
case LogTypes::LOG_LEVELS::LINFO:
|
|
||||||
color = "cyan";
|
|
||||||
break;
|
|
||||||
case LogTypes::LOG_LEVELS::LDEBUG:
|
|
||||||
color = "lightgrey";
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
std::string str(text);
|
std::string str(text);
|
||||||
StringPopBackIf(&str, '\n');
|
|
||||||
m_log_queue.push(QStringLiteral("%1 <span style=\"color: %2; white-space: pre\">%3</span>")
|
QueueOnObject(this, [this, level, str]() mutable {
|
||||||
.arg(QString::fromStdString(str.substr(0, TIMESTAMP_LENGTH)),
|
std::lock_guard<std::mutex> lock(m_log_mutex);
|
||||||
QString::fromStdString(color),
|
|
||||||
QString::fromStdString(str.substr(TIMESTAMP_LENGTH)).toHtmlEscaped()));
|
const char* color = "white";
|
||||||
|
|
||||||
|
switch (level)
|
||||||
|
{
|
||||||
|
case LogTypes::LOG_LEVELS::LERROR:
|
||||||
|
color = "red";
|
||||||
|
break;
|
||||||
|
case LogTypes::LOG_LEVELS::LWARNING:
|
||||||
|
color = "yellow";
|
||||||
|
break;
|
||||||
|
case LogTypes::LOG_LEVELS::LNOTICE:
|
||||||
|
color = "lime";
|
||||||
|
break;
|
||||||
|
case LogTypes::LOG_LEVELS::LINFO:
|
||||||
|
color = "cyan";
|
||||||
|
break;
|
||||||
|
case LogTypes::LOG_LEVELS::LDEBUG:
|
||||||
|
color = "lightgrey";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
StringPopBackIf(&str, '\n');
|
||||||
|
m_log_queue.push(
|
||||||
|
QStringLiteral("%1 <span style=\"color: %2; white-space: pre\">%3</span>")
|
||||||
|
.arg(QString::fromStdString(str.substr(0, TIMESTAMP_LENGTH)),
|
||||||
|
QString::fromStdString(color),
|
||||||
|
QString::fromStdString(str.substr(TIMESTAMP_LENGTH)).toHtmlEscaped()));
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
void LogWidget::closeEvent(QCloseEvent*)
|
void LogWidget::closeEvent(QCloseEvent*)
|
||||||
|
|
Loading…
Reference in New Issue