From 31119114cec29b890bc755bed0272a208b7130bf Mon Sep 17 00:00:00 2001 From: Jonathan Bagg Date: Thu, 31 May 2018 21:35:21 -0400 Subject: [PATCH] AvahiCore - add reference count for AvahiServer instance --- avahicore.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/avahicore.cpp b/avahicore.cpp index 4d771ed..ac77a42 100644 --- a/avahicore.cpp +++ b/avahicore.cpp @@ -55,9 +55,10 @@ public: avahi_server_config_init(&config); config.publish_workstation = 0; - if (!server) { + if (!referenceCount) { server = avahi_server_new(poll, &config, serverCallback, this, &error); } + referenceCount++; if (!server) { return; } @@ -259,6 +260,7 @@ public: QZeroConf *pub; const AvahiPoll *poll; static AvahiServer *server; + static quint32 referenceCount; AvahiServerConfig config; AvahiSEntryGroup *group; AvahiSServiceBrowser *browser; @@ -270,6 +272,7 @@ public: }; AvahiServer* QZeroConfPrivate::server = nullptr; +quint32 QZeroConfPrivate::referenceCount = 0; QZeroConf::QZeroConf(QObject *parent) : QObject (parent) { @@ -282,7 +285,8 @@ QZeroConf::~QZeroConf() avahi_string_list_free(pri->txt); pri->broswerCleanUp(); avahi_server_config_free(&pri->config); - if (pri->server) + pri->referenceCount--; + if (!pri->referenceCount) avahi_server_free(pri->server); delete pri; }