aboutsummaryrefslogtreecommitdiffstats
path: root/src/db/upnp
diff options
context:
space:
mode:
Diffstat (limited to 'src/db/upnp')
-rw-r--r--src/db/upnp/Directory.cxx12
-rw-r--r--src/db/upnp/Directory.hxx13
2 files changed, 14 insertions, 11 deletions
diff --git a/src/db/upnp/Directory.cxx b/src/db/upnp/Directory.cxx
index cc28ec295..8a6708a67 100644
--- a/src/db/upnp/Directory.cxx
+++ b/src/db/upnp/Directory.cxx
@@ -149,15 +149,9 @@ protected:
virtual void EndElement(const XML_Char *name)
{
- if (!strcmp(name, "container")) {
- if (checkobjok()) {
- m_dir.m_containers.push_back(m_tobj);
- }
- } else if (!strcmp(name, "item")) {
- if (checkobjok()) {
- m_dir.m_items.push_back(m_tobj);
- }
- }
+ if ((!strcmp(name, "container") || !strcmp(name, "item")) &&
+ checkobjok())
+ m_dir.objects.push_back(m_tobj);
m_path.pop_back();
}
diff --git a/src/db/upnp/Directory.hxx b/src/db/upnp/Directory.hxx
index 55dc09c71..3324b2232 100644
--- a/src/db/upnp/Directory.hxx
+++ b/src/db/upnp/Directory.hxx
@@ -21,6 +21,7 @@
#define MPD_UPNP_DIRECTORY_HXX
#include "Object.hxx"
+#include "Compiler.h"
#include <string>
#include <vector>
@@ -33,8 +34,16 @@ class Error;
*/
class UPnPDirContent {
public:
- std::vector<UPnPDirObject> m_containers;
- std::vector<UPnPDirObject> m_items;
+ std::vector<UPnPDirObject> objects;
+
+ gcc_pure
+ const UPnPDirObject *FindObject(const char *name) const {
+ for (const auto &o : objects)
+ if (o.name == name)
+ return &o;
+
+ return nullptr;
+ }
/**
* Parse from DIDL-Lite XML data.