AvahiCore - add reference count for AvahiServer instance

This commit is contained in:
Jonathan Bagg
2018-05-31 21:35:21 -04:00
parent c0bbc139aa
commit 31119114ce

View File

@ -55,9 +55,10 @@ public:
avahi_server_config_init(&config); avahi_server_config_init(&config);
config.publish_workstation = 0; config.publish_workstation = 0;
if (!server) { if (!referenceCount) {
server = avahi_server_new(poll, &config, serverCallback, this, &error); server = avahi_server_new(poll, &config, serverCallback, this, &error);
} }
referenceCount++;
if (!server) { if (!server) {
return; return;
} }
@ -259,6 +260,7 @@ public:
QZeroConf *pub; QZeroConf *pub;
const AvahiPoll *poll; const AvahiPoll *poll;
static AvahiServer *server; static AvahiServer *server;
static quint32 referenceCount;
AvahiServerConfig config; AvahiServerConfig config;
AvahiSEntryGroup *group; AvahiSEntryGroup *group;
AvahiSServiceBrowser *browser; AvahiSServiceBrowser *browser;
@ -270,6 +272,7 @@ public:
}; };
AvahiServer* QZeroConfPrivate::server = nullptr; AvahiServer* QZeroConfPrivate::server = nullptr;
quint32 QZeroConfPrivate::referenceCount = 0;
QZeroConf::QZeroConf(QObject *parent) : QObject (parent) QZeroConf::QZeroConf(QObject *parent) : QObject (parent)
{ {
@ -282,7 +285,8 @@ QZeroConf::~QZeroConf()
avahi_string_list_free(pri->txt); avahi_string_list_free(pri->txt);
pri->broswerCleanUp(); pri->broswerCleanUp();
avahi_server_config_free(&pri->config); avahi_server_config_free(&pri->config);
if (pri->server) pri->referenceCount--;
if (!pri->referenceCount)
avahi_server_free(pri->server); avahi_server_free(pri->server);
delete pri; delete pri;
} }