aboutsummaryrefslogtreecommitdiffstats
path: root/src/db
diff options
context:
space:
mode:
authorMax Kellermann <max@duempel.org>2014-01-16 09:03:41 +0100
committerMax Kellermann <max@duempel.org>2014-01-16 09:08:04 +0100
commit1a09003a6e8fc5ae3b1e4b01ae8432b0ed3ca7bd (patch)
tree66e531cf6e92bea80619c669ff8412efd1d0b5f2 /src/db
parenta8277148230bf02c89656e3839b72d77e8d91cf0 (diff)
downloadmpd-1a09003a6e8fc5ae3b1e4b01ae8432b0ed3ca7bd.tar.gz
mpd-1a09003a6e8fc5ae3b1e4b01ae8432b0ed3ca7bd.tar.xz
mpd-1a09003a6e8fc5ae3b1e4b01ae8432b0ed3ca7bd.zip
db/upnp: move the UPnPDeviceDirectory instance to class UpnpDatabase
Delete the object when closing the database.
Diffstat (limited to 'src/db')
-rw-r--r--src/db/UpnpDatabasePlugin.cxx10
-rw-r--r--src/db/upnp/Discovery.cxx11
-rw-r--r--src/db/upnp/Discovery.hxx6
3 files changed, 8 insertions, 19 deletions
diff --git a/src/db/UpnpDatabasePlugin.cxx b/src/db/UpnpDatabasePlugin.cxx
index 5381b30a9..3c2ca72ff 100644
--- a/src/db/UpnpDatabasePlugin.cxx
+++ b/src/db/UpnpDatabasePlugin.cxx
@@ -163,9 +163,10 @@ UpnpDatabase::Open(Error &error)
if (!m_lib)
return false;
- m_superdir = UPnPDeviceDirectory::getTheDir();
- if (!m_superdir || !m_superdir->ok()) {
- error.Set(upnp_domain, "Discovery services startup failed");
+ m_superdir = new UPnPDeviceDirectory();
+ if (!m_superdir->ok()) {
+ error.Set(m_superdir->GetError());
+ delete m_superdir;
return false;
}
@@ -180,7 +181,8 @@ void
UpnpDatabase::Close()
{
delete m_root;
- // TBD decide what we do with the lib and superdir objects
+ delete m_superdir;
+ // TBD decide what we do with the lib object
}
void
diff --git a/src/db/upnp/Discovery.cxx b/src/db/upnp/Discovery.cxx
index 89f01df2a..97b57c89c 100644
--- a/src/db/upnp/Discovery.cxx
+++ b/src/db/upnp/Discovery.cxx
@@ -275,17 +275,6 @@ UPnPDeviceDirectory::search()
return true;
}
-UPnPDeviceDirectory *UPnPDeviceDirectory::getTheDir()
-{
- // TODO: elimate static variable
- static UPnPDeviceDirectory *theDevDir;
- if (theDevDir == nullptr)
- theDevDir = new UPnPDeviceDirectory();
- if (theDevDir && !theDevDir->ok())
- return 0;
- return theDevDir;
-}
-
bool
UPnPDeviceDirectory::getDirServices(std::vector<ContentDirectoryService> &out)
{
diff --git a/src/db/upnp/Discovery.hxx b/src/db/upnp/Discovery.hxx
index 899ac83ab..ddc7d2909 100644
--- a/src/db/upnp/Discovery.hxx
+++ b/src/db/upnp/Discovery.hxx
@@ -46,14 +46,12 @@ class UPnPDeviceDirectory {
time_t m_lastSearch;
- UPnPDeviceDirectory();
public:
+ UPnPDeviceDirectory();
+
UPnPDeviceDirectory(const UPnPDeviceDirectory &) = delete;
UPnPDeviceDirectory& operator=(const UPnPDeviceDirectory &) = delete;
- /** This class is a singleton. Get the instance here */
- static UPnPDeviceDirectory *getTheDir();
-
/** Retrieve the directory services currently seen on the network */
bool getDirServices(std::vector<ContentDirectoryService> &);