diff --git a/src/libs/zeroconf/avahiLib.cpp b/src/libs/zeroconf/avahiLib.cpp index 0a8912d0fae..38341ea182c 100644 --- a/src/libs/zeroconf/avahiLib.cpp +++ b/src/libs/zeroconf/avahiLib.cpp @@ -33,6 +33,7 @@ #include "servicebrowser.h" #include "servicebrowser_p.h" +#include #include #include #include @@ -126,9 +127,10 @@ private: QLibrary nativeLib; public: - AvahiZConfLib(QString libName = QLatin1String("avahi"), + AvahiZConfLib(QString libName = QLatin1String("avahi-client"), + QString version = QLatin1String("3"), ZConfLib::Ptr fallBack = ZConfLib::Ptr(0)) : - ZConfLib(fallBack), nativeLib(libName) + ZConfLib(fallBack), nativeLib(libName, version) { #ifndef ZCONF_AVAHI_STATIC_LINKING // dynamic linking @@ -370,8 +372,10 @@ public: } }; -ZConfLib::Ptr ZConfLib::createAvahiLib(const QString &libName, ZConfLib::Ptr fallback) { - return ZConfLib::Ptr(new AvahiZConfLib(libName, fallback)); +ZConfLib::Ptr ZConfLib::createAvahiLib(const QString &libName, const QString &version, + ZConfLib::Ptr fallback) +{ + return ZConfLib::Ptr(new AvahiZConfLib(libName, version, fallback)); } extern "C" void cAvahiResolveReply( @@ -557,7 +561,9 @@ extern "C" int cAvahiPollFunction(struct pollfd *ufds, unsigned int nfds, int ti namespace ZeroConf { namespace Internal { -ZConfLib::Ptr ZConfLib::createAvahiLib(const QString &/*extraPaths*/, ZConfLib::Ptr fallback) { +ZConfLib::Ptr ZConfLib::createAvahiLib(const QString &/*lib*/, const QString &version, + ZConfLib::Ptr fallback) +{ return fallback; } diff --git a/src/libs/zeroconf/servicebrowser.cpp b/src/libs/zeroconf/servicebrowser.cpp index fa2e58ea90f..79066eeb70e 100644 --- a/src/libs/zeroconf/servicebrowser.cpp +++ b/src/libs/zeroconf/servicebrowser.cpp @@ -132,8 +132,8 @@ class ZeroConfLib public: ZeroConfLib(); ZConfLib::Ptr defaultLib(); - void setDefaultLib(LibUsage usage, const QString &avahiLibName, const QString &dnsSdLibName, - const QString &dnsSdDaemonPath); + void setDefaultLib(LibUsage usage, const QString &avahiLibName, const QString &avahiVersion, + const QString &dnsSdLibName, const QString &dnsSdDaemonPath); private: static const char *defaultmDnsSdLibName; @@ -153,7 +153,7 @@ Q_GLOBAL_STATIC(ZeroConfLib, zeroConfLibInstance) #endif ZeroConfLib::ZeroConfLib(): m_lock(QMutex::Recursive), - m_defaultLib(ZConfLib::createAvahiLib(QLatin1String("avahi-client"), + m_defaultLib(ZConfLib::createAvahiLib(QLatin1String("avahi-client"),QLatin1String("3"), ZConfLib::createDnsSdLib(QLatin1String(defaultmDnsSdLibName), ZConfLib::createEmbeddedLib(QLatin1String(defaultmDNSDaemonName))))) { @@ -169,7 +169,8 @@ ZConfLib::Ptr ZeroConfLib::defaultLib(){ } void ZeroConfLib::setDefaultLib(LibUsage usage, const QString &avahiLibName, - const QString &dnsSdLibName, const QString &dnsSdDaemonPath){ + const QString &avahiVersion, const QString &dnsSdLibName, + const QString &dnsSdDaemonPath){ QMutexLocker l(&m_lock); switch (usage){ case (UseDnsSdOnly): @@ -179,15 +180,16 @@ void ZeroConfLib::setDefaultLib(LibUsage usage, const QString &avahiLibName, m_defaultLib = ZConfLib::createEmbeddedLib(dnsSdDaemonPath); break; case (UseAvahiOnly): - m_defaultLib = ZConfLib::createAvahiLib(avahiLibName); + m_defaultLib = ZConfLib::createAvahiLib(avahiLibName, avahiVersion); break; case (UseAvahiOrDnsSd): - m_defaultLib = ZConfLib::createAvahiLib(avahiLibName, ZConfLib::createDnsSdLib(dnsSdLibName)); + m_defaultLib = ZConfLib::createAvahiLib(avahiLibName, avahiVersion, + ZConfLib::createDnsSdLib(dnsSdLibName)); break; case (UseAvahiOrDnsSdOrEmbedded): - m_defaultLib = ZConfLib::createAvahiLib( - avahiLibName, ZConfLib::createDnsSdLib(dnsSdLibName, - ZConfLib::createEmbeddedLib(dnsSdDaemonPath))); + m_defaultLib = ZConfLib::createAvahiLib(avahiLibName, avahiVersion, + ZConfLib::createDnsSdLib(dnsSdLibName, + ZConfLib::createEmbeddedLib(dnsSdDaemonPath))); break; default: qDebug() << "invalid usage " << usage; @@ -583,10 +585,10 @@ void ServiceBrowser::autoRefresh() \threadsafe */ -void setDefaultZConfLib(LibUsage usage, const QString &avahiLibName, const QString &dnsSdLibName, - const QString &dnsSdDaemonPath) +void setDefaultZConfLib(LibUsage usage, const QString &avahiLibName, const QString &version, + const QString &dnsSdLibName,const QString &dnsSdDaemonPath) { - zeroConfLibInstance()->setDefaultLib(usage, avahiLibName, dnsSdLibName, dnsSdDaemonPath); + zeroConfLibInstance()->setDefaultLib(usage, avahiLibName, version, dnsSdLibName, dnsSdDaemonPath); } namespace Internal { @@ -1786,6 +1788,10 @@ void MainConnection::createConnection() abortLib(); } } + if (status() < Stopping) + appendError(ErrorMessage::NoteLevel, + tr("MainConncetion could sucessfully create a connection using lib %1") + .arg(lib->name())); } ZConfLib::RunLoopStatus MainConnection::handleEvent() diff --git a/src/libs/zeroconf/servicebrowser_p.h b/src/libs/zeroconf/servicebrowser_p.h index 6f16d4f0282..50dd6ae49ad 100644 --- a/src/libs/zeroconf/servicebrowser_p.h +++ b/src/libs/zeroconf/servicebrowser_p.h @@ -123,7 +123,7 @@ public: static Ptr createEmbeddedLib(const QString &daemonPath, Ptr fallback = Ptr(0)); static Ptr createDnsSdLib(const QString &libName, Ptr fallback = Ptr(0)); - static Ptr createAvahiLib(const QString &libName, Ptr fallback = Ptr(0)); + static Ptr createAvahiLib(const QString &libName, const QString &version, Ptr fallback = Ptr(0)); protected: bool m_isOk; QString m_errorMsg;