mirror of
https://github.com/hyperion-project/hyperion.ng.git
synced 2025-03-01 10:33:28 +00:00
Fix deletion of CecHandler
This commit is contained in:
@@ -1,5 +1,3 @@
|
|||||||
#include <cassert>
|
|
||||||
#include <stdlib.h>
|
|
||||||
|
|
||||||
#include <QCoreApplication>
|
#include <QCoreApplication>
|
||||||
#include <QResource>
|
#include <QResource>
|
||||||
@@ -10,8 +8,6 @@
|
|||||||
#include <QJsonObject>
|
#include <QJsonObject>
|
||||||
#include <QJsonValue>
|
#include <QJsonValue>
|
||||||
#include <QPair>
|
#include <QPair>
|
||||||
#include <cstdint>
|
|
||||||
#include <limits>
|
|
||||||
#include <QThread>
|
#include <QThread>
|
||||||
|
|
||||||
#include <utils/Components.h>
|
#include <utils/Components.h>
|
||||||
@@ -239,9 +235,13 @@ void HyperionDaemon::handleInstanceStateChange(InstanceState state, quint8 insta
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case InstanceState::H_STOPPED:
|
case InstanceState::H_STOPPED:
|
||||||
|
case InstanceState::H_ON_STOP:
|
||||||
|
case InstanceState::H_CREATED:
|
||||||
|
case InstanceState::H_DELETED:
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
qWarning() << "HyperionDaemon::handleInstanceStateChange - Unhandled state:" << static_cast<int>(state);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -271,30 +271,27 @@ void HyperionDaemon::freeObjects()
|
|||||||
#ifdef ENABLE_MDNS
|
#ifdef ENABLE_MDNS
|
||||||
if (_mDNSProvider != nullptr)
|
if (_mDNSProvider != nullptr)
|
||||||
{
|
{
|
||||||
auto mDnsThread = _mDNSProvider->thread();
|
auto *mDnsThread = _mDNSProvider->thread();
|
||||||
mDnsThread->quit();
|
mDnsThread->quit();
|
||||||
mDnsThread->wait();
|
mDnsThread->wait();
|
||||||
delete mDnsThread;
|
|
||||||
_mDNSProvider = nullptr;
|
_mDNSProvider = nullptr;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (_jsonServer != nullptr)
|
if (_jsonServer != nullptr)
|
||||||
{
|
{
|
||||||
auto jsonThread = _jsonServer->thread();
|
auto *jsonThread = _jsonServer->thread();
|
||||||
jsonThread->quit();
|
jsonThread->quit();
|
||||||
jsonThread->wait();
|
jsonThread->wait();
|
||||||
delete jsonThread;
|
|
||||||
_jsonServer = nullptr;
|
_jsonServer = nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(ENABLE_FLATBUF_SERVER)
|
#if defined(ENABLE_FLATBUF_SERVER)
|
||||||
if (_flatBufferServer != nullptr)
|
if (_flatBufferServer != nullptr)
|
||||||
{
|
{
|
||||||
auto flatBufferServerThread = _flatBufferServer->thread();
|
auto *flatBufferServerThread = _flatBufferServer->thread();
|
||||||
flatBufferServerThread->quit();
|
flatBufferServerThread->quit();
|
||||||
flatBufferServerThread->wait();
|
flatBufferServerThread->wait();
|
||||||
delete flatBufferServerThread;
|
|
||||||
_flatBufferServer = nullptr;
|
_flatBufferServer = nullptr;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@@ -302,10 +299,9 @@ void HyperionDaemon::freeObjects()
|
|||||||
#if defined(ENABLE_PROTOBUF_SERVER)
|
#if defined(ENABLE_PROTOBUF_SERVER)
|
||||||
if (_protoServer != nullptr)
|
if (_protoServer != nullptr)
|
||||||
{
|
{
|
||||||
auto protoServerThread = _protoServer->thread();
|
auto *protoServerThread = _protoServer->thread();
|
||||||
protoServerThread->quit();
|
protoServerThread->quit();
|
||||||
protoServerThread->wait();
|
protoServerThread->wait();
|
||||||
delete protoServerThread;
|
|
||||||
_protoServer = nullptr;
|
_protoServer = nullptr;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@@ -313,28 +309,25 @@ void HyperionDaemon::freeObjects()
|
|||||||
//ssdp before webserver
|
//ssdp before webserver
|
||||||
if (_ssdp != nullptr)
|
if (_ssdp != nullptr)
|
||||||
{
|
{
|
||||||
auto ssdpThread = _ssdp->thread();
|
auto *ssdpThread = _ssdp->thread();
|
||||||
ssdpThread->quit();
|
ssdpThread->quit();
|
||||||
ssdpThread->wait();
|
ssdpThread->wait();
|
||||||
delete ssdpThread;
|
|
||||||
_ssdp = nullptr;
|
_ssdp = nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (_webserver != nullptr)
|
if (_webserver != nullptr)
|
||||||
{
|
{
|
||||||
auto webserverThread = _webserver->thread();
|
auto *webserverThread = _webserver->thread();
|
||||||
webserverThread->quit();
|
webserverThread->quit();
|
||||||
webserverThread->wait();
|
webserverThread->wait();;
|
||||||
delete webserverThread;
|
|
||||||
_webserver = nullptr;
|
_webserver = nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (_sslWebserver != nullptr)
|
if (_sslWebserver != nullptr)
|
||||||
{
|
{
|
||||||
auto sslWebserverThread = _sslWebserver->thread();
|
auto *sslWebserverThread = _sslWebserver->thread();
|
||||||
sslWebserverThread->quit();
|
sslWebserverThread->quit();
|
||||||
sslWebserverThread->wait();
|
sslWebserverThread->wait();
|
||||||
delete sslWebserverThread;
|
|
||||||
_sslWebserver = nullptr;
|
_sslWebserver = nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -342,15 +335,12 @@ void HyperionDaemon::freeObjects()
|
|||||||
_instanceManager->stopAll();
|
_instanceManager->stopAll();
|
||||||
|
|
||||||
delete _amlGrabber;
|
delete _amlGrabber;
|
||||||
if (_dispmanx != nullptr)
|
delete _dispmanx;
|
||||||
delete _dispmanx;
|
|
||||||
delete _fbGrabber;
|
delete _fbGrabber;
|
||||||
delete _osxGrabber;
|
delete _osxGrabber;
|
||||||
delete _qtGrabber;
|
delete _qtGrabber;
|
||||||
delete _dxGrabber;
|
delete _dxGrabber;
|
||||||
delete _videoGrabber;
|
delete _videoGrabber;
|
||||||
delete _audioGrabber;
|
|
||||||
|
|
||||||
_videoGrabber = nullptr;
|
_videoGrabber = nullptr;
|
||||||
_amlGrabber = nullptr;
|
_amlGrabber = nullptr;
|
||||||
_dispmanx = nullptr;
|
_dispmanx = nullptr;
|
||||||
@@ -934,6 +924,8 @@ void HyperionDaemon::startCecHandler()
|
|||||||
|
|
||||||
connect(cecHandlerThread, &QThread::started, _cecHandler, &CECHandler::start);
|
connect(cecHandlerThread, &QThread::started, _cecHandler, &CECHandler::start);
|
||||||
connect(cecHandlerThread, &QThread::finished, _cecHandler, &CECHandler::stop);
|
connect(cecHandlerThread, &QThread::finished, _cecHandler, &CECHandler::stop);
|
||||||
|
connect(cecHandlerThread, &QThread::finished, _cecHandler, &CECHandler::deleteLater);
|
||||||
|
|
||||||
connect(this, &HyperionDaemon::settingsChanged, _cecHandler, &CECHandler::handleSettingsUpdate);
|
connect(this, &HyperionDaemon::settingsChanged, _cecHandler, &CECHandler::handleSettingsUpdate);
|
||||||
Info(_log, "CEC event handler created");
|
Info(_log, "CEC event handler created");
|
||||||
|
|
||||||
@@ -949,13 +941,11 @@ void HyperionDaemon::stopCecHandler()
|
|||||||
#if defined(ENABLE_CEC)
|
#if defined(ENABLE_CEC)
|
||||||
if (_cecHandler != nullptr)
|
if (_cecHandler != nullptr)
|
||||||
{
|
{
|
||||||
auto cecHandlerThread = _cecHandler->thread();
|
auto *cecHandlerThread = _cecHandler->thread();
|
||||||
cecHandlerThread->quit();
|
cecHandlerThread->quit();
|
||||||
cecHandlerThread->wait();
|
cecHandlerThread->wait();
|
||||||
delete cecHandlerThread;
|
|
||||||
_cecHandler = nullptr;
|
_cecHandler = nullptr;
|
||||||
}
|
}
|
||||||
Info(_log, "CEC handler stopped");
|
Info(_log, "CEC handler stopped");
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user