mirror of
https://github.com/hyperion-project/hyperion.ng.git
synced 2025-03-01 10:33:28 +00:00
Fix Memory leaks (#1678)
* 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
* Revert "Move main non Thread Objects to Smart Pointers"
This reverts commit 26102ca963
.
* Add missing deletes
* Revert MdnsBrowser chnage
* Revert MdnsBrowser change
* Fix memory leaks related standalone grabber
* Address CodeQL finding
* delete pointer OsxFrameGrabber
---------
Co-authored-by: Paulchen-Panther <16664240+Paulchen-Panther@users.noreply.github.com>
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
#include <mdns/MdnsProvider.h>
|
||||
#include <mdns/MdnsServiceRegister.h>
|
||||
|
||||
//Qt includes
|
||||
// Qt includes
|
||||
#include <QHostInfo>
|
||||
#include <QThread>
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
|
||||
namespace {
|
||||
const bool verboseProvider = false;
|
||||
} //End of constants
|
||||
} // End of constants
|
||||
|
||||
MdnsProvider::MdnsProvider(QObject* parent)
|
||||
: QObject(parent)
|
||||
@@ -24,58 +24,59 @@ MdnsProvider::MdnsProvider(QObject* parent)
|
||||
|
||||
void MdnsProvider::init()
|
||||
{
|
||||
_server = new QMdnsEngine::Server();
|
||||
_hostname = new QMdnsEngine::Hostname(_server);
|
||||
_server.reset(new QMdnsEngine::Server());
|
||||
_hostname.reset(new QMdnsEngine::Hostname(_server.data()));
|
||||
|
||||
connect(_hostname, &QMdnsEngine::Hostname::hostnameChanged, this, &MdnsProvider::onHostnameChanged);
|
||||
connect(_hostname.data(), &QMdnsEngine::Hostname::hostnameChanged, this, &MdnsProvider::onHostnameChanged);
|
||||
DebugIf(verboseProvider, _log, "Hostname [%s], isRegistered [%d]", _hostname->hostname().constData(), _hostname->isRegistered());
|
||||
}
|
||||
|
||||
MdnsProvider::~MdnsProvider()
|
||||
{
|
||||
qDeleteAll(_providedServiceTypes);
|
||||
|
||||
_hostname->deleteLater();
|
||||
_server->deleteLater();
|
||||
_providedServiceTypes.clear();
|
||||
}
|
||||
|
||||
void MdnsProvider::publishService(const QString& serviceType, quint16 servicePort, const QByteArray& serviceName)
|
||||
{
|
||||
QMdnsEngine::Provider* provider(nullptr);
|
||||
|
||||
QByteArray type = MdnsServiceRegister::getServiceType(serviceType);
|
||||
|
||||
if (!type.isEmpty())
|
||||
{
|
||||
DebugIf(verboseProvider, _log, "Publish new mDNS serviceType [%s], Thread: %s", type.constData(), QSTRING_CSTR(QThread::currentThread()->objectName()));
|
||||
|
||||
if (!_providedServiceTypes.contains(type))
|
||||
{
|
||||
provider = new QMdnsEngine::Provider(_server, _hostname);
|
||||
_providedServiceTypes.insert(type, provider);
|
||||
QSharedPointer<QMdnsEngine::Provider> newProvider = QSharedPointer<QMdnsEngine::Provider>::create(_server.data(), _hostname.data());
|
||||
_providedServiceTypes.insert(type, newProvider);
|
||||
|
||||
}
|
||||
|
||||
QSharedPointer<QMdnsEngine::Provider> provider = _providedServiceTypes.value(type);
|
||||
if (!provider.isNull())
|
||||
{
|
||||
QMdnsEngine::Service service;
|
||||
service.setType(type);
|
||||
service.setPort(servicePort);
|
||||
|
||||
QByteArray name(QHostInfo::localHostName().toUtf8());
|
||||
if (!serviceName.isEmpty())
|
||||
{
|
||||
name.prepend(serviceName + "@");
|
||||
}
|
||||
service.setName(name);
|
||||
|
||||
QByteArray uuid = AuthManager::getInstance()->getID().toUtf8();
|
||||
const QMap<QByteArray, QByteArray> attributes = {{"id", uuid}, {"version", HYPERION_VERSION}};
|
||||
service.setAttributes(attributes);
|
||||
|
||||
DebugIf(verboseProvider, _log, "[%s], Name: [%s], Port: [%u] ", service.type().constData(), service.name().constData(), service.port());
|
||||
|
||||
provider->update(service);
|
||||
}
|
||||
else
|
||||
{
|
||||
provider = _providedServiceTypes[type];
|
||||
Error(_log, "Not able to get hold of mDNS serviceType [%s]", type.constData());
|
||||
}
|
||||
|
||||
QMdnsEngine::Service service;
|
||||
service.setType(type);
|
||||
service.setPort(servicePort);
|
||||
|
||||
QByteArray name(QHostInfo::localHostName().toUtf8());
|
||||
if (!serviceName.isEmpty())
|
||||
{
|
||||
name.prepend(serviceName + "@");
|
||||
}
|
||||
service.setName(name);
|
||||
|
||||
QByteArray id = AuthManager::getInstance()->getID().toUtf8();
|
||||
const QMap<QByteArray, QByteArray> attributes = { {"id", id}, {"version", HYPERION_VERSION} };
|
||||
service.setAttributes(attributes);
|
||||
|
||||
DebugIf(verboseProvider, _log, "[%s], Name: [%s], Port: [%u] ", service.type().constData(), service.name().constData(), service.port());
|
||||
|
||||
provider->update(service);
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user