fix: Delete order of threads (#846)

* Fix #668 by fixing delete order of threads

* update changelog

Co-authored-by: Sersch <edeltraud70@gmx.de>
This commit is contained in:
Murat Seker
2020-06-28 23:42:57 +02:00
committed by GitHub
parent 0cb1ab2be1
commit a68ed7d44f
3 changed files with 16 additions and 11 deletions

View File

@@ -170,15 +170,29 @@ void HyperionDaemon::freeObjects()
delete _jsonServer;
_flatBufferServer->thread()->quit();
_flatBufferServer->thread()->wait(1000);
_flatBufferServer->deleteLater();
_flatBufferServer->thread()->deleteLater();
_protoServer->thread()->quit();
_protoServer->thread()->wait(1000);
_protoServer->deleteLater();
_protoServer->thread()->deleteLater();
//ssdp before webserver
_ssdp->thread()->quit();
_ssdp->thread()->wait(1000);
_ssdp->deleteLater();
_ssdp->thread()->deleteLater();
_webserver->thread()->quit();
_webserver->thread()->wait(1000);
_webserver->deleteLater();
_webserver->thread()->deleteLater();
_sslWebserver->thread()->quit();
_sslWebserver->thread()->wait(1000);
_sslWebserver->deleteLater();
_sslWebserver->thread()->deleteLater();
// stop Hyperions (non blocking)
_instanceManager->stopAll();
@@ -221,8 +235,6 @@ void HyperionDaemon::startNetworkServices()
QThread *fbThread = new QThread(this);
_flatBufferServer->moveToThread(fbThread);
connect(fbThread, &QThread::started, _flatBufferServer, &FlatBufferServer::initServer);
connect(fbThread, &QThread::finished, _flatBufferServer, &QObject::deleteLater);
connect(fbThread, &QThread::finished, fbThread, &QObject::deleteLater);
connect(this, &HyperionDaemon::settingsChanged, _flatBufferServer, &FlatBufferServer::handleSettingsUpdate);
fbThread->start();
@@ -231,8 +243,6 @@ void HyperionDaemon::startNetworkServices()
QThread *pThread = new QThread(this);
_protoServer->moveToThread(pThread);
connect(pThread, &QThread::started, _protoServer, &ProtoServer::initServer);
connect(pThread, &QThread::finished, _protoServer, &QObject::deleteLater);
connect(pThread, &QThread::finished, pThread, &QObject::deleteLater);
connect(this, &HyperionDaemon::settingsChanged, _protoServer, &ProtoServer::handleSettingsUpdate);
pThread->start();
@@ -241,8 +251,6 @@ void HyperionDaemon::startNetworkServices()
QThread *wsThread = new QThread(this);
_webserver->moveToThread(wsThread);
connect(wsThread, &QThread::started, _webserver, &WebServer::initServer);
connect(wsThread, &QThread::finished, _webserver, &QObject::deleteLater);
connect(wsThread, &QThread::finished, wsThread, &QObject::deleteLater);
connect(this, &HyperionDaemon::settingsChanged, _webserver, &WebServer::handleSettingsUpdate);
wsThread->start();
@@ -251,8 +259,6 @@ void HyperionDaemon::startNetworkServices()
QThread *sslWsThread = new QThread(this);
_sslWebserver->moveToThread(sslWsThread);
connect(sslWsThread, &QThread::started, _sslWebserver, &WebServer::initServer);
connect(sslWsThread, &QThread::finished, _sslWebserver, &QObject::deleteLater);
connect(sslWsThread, &QThread::finished, sslWsThread, &QObject::deleteLater);
connect(this, &HyperionDaemon::settingsChanged, _sslWebserver, &WebServer::handleSettingsUpdate);
sslWsThread->start();
@@ -261,8 +267,6 @@ void HyperionDaemon::startNetworkServices()
QThread *ssdpThread = new QThread(this);
_ssdp->moveToThread(ssdpThread);
connect(ssdpThread, &QThread::started, _ssdp, &SSDPHandler::initServer);
connect(ssdpThread, &QThread::finished, _ssdp, &QObject::deleteLater);
connect(ssdpThread, &QThread::finished, ssdpThread, &QObject::deleteLater);
connect(_webserver, &WebServer::stateChange, _ssdp, &SSDPHandler::handleWebServerStateChange);
connect(this, &HyperionDaemon::settingsChanged, _ssdp, &SSDPHandler::handleSettingsUpdate);
ssdpThread->start();