--- a/src/ohinfo.cxx
+++ b/src/ohinfo.cxx
@@ -17,21 +17,22 @@
#include "ohinfo.hxx"
-#include <upnp/upnp.h> // for UPNP_E_SUCCESS
+#include <upnp/upnp.h>
-#include <functional> // for _Bind, bind, _1, _2
-#include <iostream> // for endl
-#include <string> // for string
-#include <unordered_map> // for unordered_map, etc
-#include <utility> // for pair
-#include <vector> // for vector
+#include <functional>
+#include <iostream>
+#include <string>
+#include <unordered_map>
+#include <utility>
+#include <vector>
-#include "libupnpp/log.hxx" // for LOGDEB
-#include "libupnpp/soaphelp.hxx" // for SoapOutgoing, i2s, SoapIncoming
+#include "libupnpp/log.hxx"
+#include "libupnpp/soaphelp.hxx"
-#include "mpdcli.hxx" // for MpdStatus, etc
-#include "upmpd.hxx" // for UpMpd
-#include "upmpdutils.hxx" // for didlmake, diffmaps
+#include "mpdcli.hxx"
+#include "upmpd.hxx"
+#include "upmpdutils.hxx"
+#include "ohplaylist.hxx"
using namespace std;
using namespace std::placeholders;
@@ -40,7 +41,7 @@
static const string sIdProduct("urn:av-openhome-org:serviceId:Info");
OHInfo::OHInfo(UpMpd *dev)
- : OHService(sTpProduct, sIdProduct, dev)
+ : OHService(sTpProduct, sIdProduct, dev), m_ohpl(0)
{
dev->addActionMapping(this, "Counters",
bind(&OHInfo::counters, this, _1, _2));
@@ -60,6 +61,11 @@
if (is_song) {
uri = mpds.currentsong.uri;
+ // Prefer metadata from cache (copy from media server) to
+ // whatever comes from mpd
+ if (m_ohpl && m_ohpl->cacheFind(uri, metadata)) {
+ return;
+ }
metadata = didlmake(mpds.currentsong);
} else {
uri.clear();