diff options
Diffstat (limited to 'src/db/plugins/UpnpDatabasePlugin.cxx')
-rw-r--r-- | src/db/plugins/UpnpDatabasePlugin.cxx | 26 |
1 files changed, 10 insertions, 16 deletions
diff --git a/src/db/plugins/UpnpDatabasePlugin.cxx b/src/db/plugins/UpnpDatabasePlugin.cxx index ac2055f7d..efc602be6 100644 --- a/src/db/plugins/UpnpDatabasePlugin.cxx +++ b/src/db/plugins/UpnpDatabasePlugin.cxx @@ -20,7 +20,7 @@ #include "config.h" #include "UpnpDatabasePlugin.hxx" #include "lib/upnp/Domain.hxx" -#include "lib/upnp/upnpplib.hxx" +#include "lib/upnp/ClientInit.hxx" #include "lib/upnp/Discovery.hxx" #include "lib/upnp/ContentDirectoryService.hxx" #include "lib/upnp/Util.hxx" @@ -69,7 +69,7 @@ public: }; class UpnpDatabase : public Database { - LibUPnP *lib; + UpnpClient_Handle handle; UPnPDeviceDirectory *discovery; public: @@ -175,17 +175,13 @@ UpnpDatabase::Configure(const config_param &, Error &) bool UpnpDatabase::Open(Error &error) { - lib = new LibUPnP(); - if (!lib->ok()) { - error.Set(lib->GetInitError()); - delete lib; + if (!UpnpClientGlobalInit(handle, error)) return false; - } - discovery = new UPnPDeviceDirectory(lib->getclh()); + discovery = new UPnPDeviceDirectory(handle); if (!discovery->Start(error)) { delete discovery; - delete lib; + UpnpClientGlobalFinish(); return false; } @@ -199,7 +195,7 @@ void UpnpDatabase::Close() { delete discovery; - delete lib; + UpnpClientGlobalFinish(); } void @@ -277,7 +273,7 @@ UpnpDatabase::SearchSongs(const ContentDirectoryService &server, return true; std::list<std::string> searchcaps; - if (!server.getSearchCapabilities(lib->getclh(), searchcaps, error)) + if (!server.getSearchCapabilities(handle, searchcaps, error)) return false; if (searchcaps.empty()) @@ -344,7 +340,7 @@ UpnpDatabase::SearchSongs(const ContentDirectoryService &server, } } - return server.search(lib->getclh(), + return server.search(handle, objid, cond.c_str(), dirbuf, error); } @@ -431,7 +427,7 @@ UpnpDatabase::ReadNode(const ContentDirectoryService &server, Error &error) const { UPnPDirContent dirbuf; - if (!server.getMetadata(lib->getclh(), objid, dirbuf, error)) + if (!server.getMetadata(handle, objid, dirbuf, error)) return false; if (dirbuf.objects.size() == 1) { @@ -485,8 +481,6 @@ UpnpDatabase::Namei(const ContentDirectoryService &server, return true; } - const UpnpClient_Handle handle = lib->getclh(); - std::string objid(rootid); // Walk the path elements, read each directory and try to find the next one @@ -663,7 +657,7 @@ UpnpDatabase::VisitServer(const ContentDirectoryService &server, and loop here, but it's not useful as mpd will only return data to the client when we're done anyway. */ UPnPDirContent dirbuf; - if (!server.readDir(lib->getclh(), tdirent.m_id.c_str(), dirbuf, + if (!server.readDir(handle, tdirent.m_id.c_str(), dirbuf, error)) return false; |