Fix a threading issue in AppLogController

Fixes #392
This commit is contained in:
Michael Zanetti 2020-09-09 18:37:28 +02:00
parent deabedacc5
commit 7b0099cd76
2 changed files with 4 additions and 0 deletions

View File

@ -36,6 +36,7 @@
#include <QClipboard> #include <QClipboard>
#include <QGuiApplication> #include <QGuiApplication>
#include <QDir> #include <QDir>
#include <QMutexLocker>
QtMessageHandler AppLogController::s_oldLogMessageHandler = nullptr; QtMessageHandler AppLogController::s_oldLogMessageHandler = nullptr;
@ -161,6 +162,7 @@ void AppLogController::logMessageHandler(QtMsgType type, const QMessageLogContex
void AppLogController::append(const QString &message, AppLogController::Type type) void AppLogController::append(const QString &message, AppLogController::Type type)
{ {
QMutexLocker locker(&m_mutex);
QString finalMessage = message + "\n"; QString finalMessage = message + "\n";
m_logFile.write(finalMessage.toUtf8()); m_logFile.write(finalMessage.toUtf8());
m_logFile.flush(); m_logFile.flush();

View File

@ -35,6 +35,7 @@
#include <QFile> #include <QFile>
#include <QQmlEngine> #include <QQmlEngine>
#include <QAbstractListModel> #include <QAbstractListModel>
#include <QMutex>
class AppLogController : public QAbstractListModel class AppLogController : public QAbstractListModel
{ {
@ -86,6 +87,7 @@ private:
QFile m_logFile; QFile m_logFile;
QStringList m_buffer; QStringList m_buffer;
QList<Type> m_types; QList<Type> m_types;
QMutex m_mutex;
}; };
#endif // APPLOGCONTROLLER_H #endif // APPLOGCONTROLLER_H