Fix an occationaly crash in logsmodel
This commit is contained in:
parent
3974cdad2e
commit
5b30af8a66
@ -38,6 +38,9 @@
|
|||||||
#include "types/logentry.h"
|
#include "types/logentry.h"
|
||||||
#include "logmanager.h"
|
#include "logmanager.h"
|
||||||
|
|
||||||
|
#include "logging.h"
|
||||||
|
NYMEA_LOGGING_CATEGORY(dcLogEngine, "LogEngine")
|
||||||
|
|
||||||
LogsModelNg::LogsModelNg(QObject *parent) : QAbstractListModel(parent)
|
LogsModelNg::LogsModelNg(QObject *parent) : QAbstractListModel(parent)
|
||||||
{
|
{
|
||||||
|
|
||||||
@ -439,7 +442,6 @@ void LogsModelNg::newLogEntryReceived(const QVariantMap &data)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
beginInsertRows(QModelIndex(), 0, 0);
|
|
||||||
QDateTime timeStamp = QDateTime::fromMSecsSinceEpoch(entryMap.value("timestamp").toLongLong());
|
QDateTime timeStamp = QDateTime::fromMSecsSinceEpoch(entryMap.value("timestamp").toLongLong());
|
||||||
QMetaEnum sourceEnum = QMetaEnum::fromType<LogEntry::LoggingSource>();
|
QMetaEnum sourceEnum = QMetaEnum::fromType<LogEntry::LoggingSource>();
|
||||||
LogEntry::LoggingSource loggingSource = static_cast<LogEntry::LoggingSource>(sourceEnum.keyToValue(entryMap.value("source").toByteArray()));
|
LogEntry::LoggingSource loggingSource = static_cast<LogEntry::LoggingSource>(sourceEnum.keyToValue(entryMap.value("source").toByteArray()));
|
||||||
@ -447,11 +449,18 @@ void LogsModelNg::newLogEntryReceived(const QVariantMap &data)
|
|||||||
LogEntry::LoggingEventType loggingEventType = static_cast<LogEntry::LoggingEventType>(loggingEventTypeEnum.keyToValue(entryMap.value("eventType").toByteArray()));
|
LogEntry::LoggingEventType loggingEventType = static_cast<LogEntry::LoggingEventType>(loggingEventTypeEnum.keyToValue(entryMap.value("eventType").toByteArray()));
|
||||||
QVariant value = loggingEventType == LogEntry::LoggingEventTypeActiveChange ? entryMap.value("active").toBool() : entryMap.value("value");
|
QVariant value = loggingEventType == LogEntry::LoggingEventTypeActiveChange ? entryMap.value("active").toBool() : entryMap.value("value");
|
||||||
LogEntry *entry = new LogEntry(timeStamp, value, thingId, typeId, loggingSource, loggingEventType, entryMap.value("errorCode").toString(), this);
|
LogEntry *entry = new LogEntry(timeStamp, value, thingId, typeId, loggingSource, loggingEventType, entryMap.value("errorCode").toString(), this);
|
||||||
|
|
||||||
|
Thing *dev = m_engine->thingManager()->things()->getThing(entry->thingId());
|
||||||
|
if (!dev) {
|
||||||
|
delete entry;
|
||||||
|
qCWarning(dcLogEngine) << "Received a log entry for a thing we don't know. Discarding.";
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
beginInsertRows(QModelIndex(), 0, 0);
|
||||||
m_list.prepend(entry);
|
m_list.prepend(entry);
|
||||||
if (m_graphSeries) {
|
if (m_graphSeries) {
|
||||||
|
|
||||||
Thing *dev = m_engine->thingManager()->things()->getThing(entry->thingId());
|
|
||||||
|
|
||||||
StateType *entryStateType = dev->thingClass()->stateTypes()->getStateType(entry->typeId());
|
StateType *entryStateType = dev->thingClass()->stateTypes()->getStateType(entry->typeId());
|
||||||
|
|
||||||
if (dev && dev->thingClass()->stateTypes()->getStateType(entry->typeId())->type().toLower() == "bool") {
|
if (dev && dev->thingClass()->stateTypes()->getStateType(entry->typeId())->type().toLower() == "bool") {
|
||||||
|
|||||||
Reference in New Issue
Block a user