From e5d3c6b3450d2b4452d59352e2baed4005bc2a0c Mon Sep 17 00:00:00 2001 From: Kevin Whitaker Date: Wed, 10 Apr 2019 22:20:16 -0400 Subject: [PATCH] Rearrange dnssd broadcast code to be more consistent and better fit class lifecycle. --- src/simplecasttcpservice.cpp | 15 +++++++++------ src/simplecasttcpservice.h | 1 + 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/src/simplecasttcpservice.cpp b/src/simplecasttcpservice.cpp index 6ddeedc..d6ccc60 100644 --- a/src/simplecasttcpservice.cpp +++ b/src/simplecasttcpservice.cpp @@ -79,18 +79,16 @@ signals: SimpleCastTcpService::SimpleCastTcpService(MiniMediaPlayer *player,QObject *parent) : QTcpServer(parent),player(player),manager(new QNetworkAccessManager(this)) { - connect(manager,SIGNAL(networkAccessibleChanged(QNetworkAccessManager::NetworkAccessibility)),this,SLOT(networkAccessChanged(QNetworkAccessManager::NetworkAccessibility))); + dnsService = new KDNSSD::PublicService(QString(),"_simplecast._tcp",this->serverPort(),"local"); + dnsService->setParent(this); } bool SimpleCastTcpService::listen(const QHostAddress& address, quint16 port) { bool listening = QTcpServer::listen(address,port); - - //Setup DNSSD - dnsService = new KDNSSD::PublicService(QString(),"_simplecast._tcp",this->serverPort(),"local"); - dnsService->setParent(this); + dnssdConnection = connect(manager,SIGNAL(networkAccessibleChanged(QNetworkAccessManager::NetworkAccessibility)),this,SLOT(networkAccessChanged(QNetworkAccessManager::NetworkAccessibility))); //Start publishing now and if not, wait for networkAccessibleManager to let us know. - if(manager->networkAccessible() == QNetworkAccessManager::Accessible && !dnsService->isPublished()) + if(manager->networkAccessible() == QNetworkAccessManager::Accessible) { dnsService->publishAsync(); } @@ -103,12 +101,17 @@ void SimpleCastTcpService::networkAccessChanged(QNetworkAccessManager::NetworkAc { dnsService->publishAsync(); } + else + { + dnsService->stop(); + } } void SimpleCastTcpService::close() { QTcpServer::close(); + disconnect(dnssdConnection); dnsService->stop(); } diff --git a/src/simplecasttcpservice.h b/src/simplecasttcpservice.h index 2434442..dc385f4 100644 --- a/src/simplecasttcpservice.h +++ b/src/simplecasttcpservice.h @@ -45,6 +45,7 @@ private: MiniMediaPlayer *player; KDNSSD::PublicService *dnsService; QNetworkAccessManager *manager; + QMetaObject::Connection dnssdConnection; }; -- GitLab