Start SmartPointers (#1679)

* Refactor to fix #1671

* Add GUI/NonGUI mode to info page

* Do not show lock config, if in non-UI mode

* Updae Changelog

* Correct includes

* Ensure key member initialization - RGB Channels

* Ensure key member initialization - WebServer

* Update RGBChannels

* Fix initialization order

* Fix key when inserting new logger in LoggerMap,
Prepare logBuffer-JSON snapshot view in LoggerManager,
Increase buffered loglines to 500

* Fix Memory leak in GrabberWrapper

* Fix Memory leak in BlackBorderProcessor

* Fix Memory leak in BlackBorderProcessor

* use ninja generator under macos

* Fix BGEffectHandler destruction

* Fix Mdns code

* Clear list after applying qDeleteAll

* Fix deletion of CecHandler

* Fix memory leak caused by wrong buffer allocation

* Remove extra pixel consistently

* Change mDNS to Qt SmartPointers

* Correct removal

* Fix usage of _width/_height (they are the output resolution, not the screen resolution)
That avoids unnecessary resizing of the output image with every transferFrame call

* Move main non Thread Objects to Smart Pointers

* Refactor Hyperion Daemon unsing smartpointers

* Correction

* Correct typos/ align text

* Fix startGrabberDispmanx

* Fix startGrabberDispmanx

* Address CodeQL finding

* Create Screen grabbers via Template

* Fix typo

* Change way of logging

* Revert change

* Address deprecation warning

* Correct auto screen grabber evaluation

---------

Co-authored-by: Paulchen-Panther <16664240+Paulchen-Panther@users.noreply.github.com>
This commit is contained in:
LordGrey
2024-02-25 17:35:39 +01:00
committed by GitHub
parent bb40778a3d
commit 31df065c0f
65 changed files with 818 additions and 927 deletions

View File

@@ -53,7 +53,7 @@ Logger* Logger::getInstance(const QString & name, const QString & subName, Logge
{
log = new Logger(name, subName, minLevel);
LoggerMap.insert(name + subName, log);
connect(log, &Logger::newLogMessage, LoggerManager::getInstance(), &LoggerManager::handleNewLogMessage);
connect(log, &Logger::newLogMessage, LoggerManager::getInstance().data(), &LoggerManager::handleNewLogMessage);
}
return log;
@@ -151,9 +151,8 @@ void Logger::write(const Logger::T_LOG_MESSAGE & message)
name.resize(MAX_IDENTIFICATION_LENGTH, ' ');
const QDateTime timestamp = QDateTime::fromMSecsSinceEpoch(message.utime);
std::cout << QString("%1 %2 : <%3> %4%5")
.arg(timestamp.toString("yyyy-MM-ddThh:mm:ss.zzz"))
.arg(timestamp.toString(Qt::ISODateWithMs))
.arg(name)
.arg(LogLevelStrings[message.level])
.arg(location)
@@ -169,8 +168,10 @@ void Logger::Message(LogLevel level, const char* sourceFile, const char* func, u
Logger::LogLevel globalLevel = static_cast<Logger::LogLevel>(int(GLOBAL_MIN_LOG_LEVEL));
if ( (globalLevel == Logger::UNSET && level < _minLevel) // no global level, use level from logger
|| (globalLevel > Logger::UNSET && level < globalLevel) ) // global level set, use global level
|| (globalLevel > Logger::UNSET && level < globalLevel) ) // global level set, use global level
{
return;
}
const size_t max_msg_length = 1024;
char msg[max_msg_length];
@@ -188,7 +189,9 @@ void Logger::Message(LogLevel level, const char* sourceFile, const char* func, u
write(repMsg);
#ifndef _WIN32
if ( _syslogEnabled && repMsg.level >= Logger::WARNING )
{
syslog (LogLevelSysLog[repMsg.level], "Previous line repeats %d times", RepeatCount.localData());
}
#endif
RepeatCount.setLocalData(0);
@@ -201,14 +204,20 @@ void Logger::Message(LogLevel level, const char* sourceFile, const char* func, u
RepeatMessage.localData().line == line)
{
if (RepeatCount.localData() >= MaxRepeatCountSize)
{
repeatedSummary();
}
else
{
RepeatCount.setLocalData(RepeatCount.localData() + 1);
}
}
else
{
if (RepeatCount.localData())
{
repeatedSummary();
}
Logger::T_LOG_MESSAGE logMsg;
@@ -225,12 +234,16 @@ void Logger::Message(LogLevel level, const char* sourceFile, const char* func, u
write(logMsg);
#ifndef _WIN32
if ( _syslogEnabled && level >= Logger::WARNING )
{
syslog (LogLevelSysLog[level], "%s", msg);
}
#endif
RepeatMessage.setLocalData(logMsg);
}
}
QScopedPointer<LoggerManager> LoggerManager::instance;
LoggerManager::LoggerManager()
: QObject()
, _loggerMaxMsgBufferSize(MAX_LOG_MSG_BUFFERED)
@@ -238,6 +251,14 @@ LoggerManager::LoggerManager()
_logMessageBuffer.reserve(_loggerMaxMsgBufferSize);
}
LoggerManager::~LoggerManager()
{
// delete components
Logger::deleteInstance();
_logMessageBuffer.clear();
}
QJsonArray LoggerManager::getLogMessageBuffer(Logger::LogLevel filter) const
{
QJsonArray messageArray;
@@ -274,8 +295,12 @@ void LoggerManager::handleNewLogMessage(const Logger::T_LOG_MESSAGE & msg)
emit newLogMessage(msg);
}
LoggerManager* LoggerManager::getInstance()
QScopedPointer<LoggerManager>& LoggerManager::getInstance()
{
static LoggerManager instance;
return &instance;
if (!instance)
{
instance.reset(new LoggerManager());
}
return instance;
}