diff options
| -rw-r--r-- | MediaBrowser.Dlna/ContentDirectory/ControlHandler.cs | 7 | ||||
| -rw-r--r-- | MediaBrowser.Dlna/Didl/DidlBuilder.cs | 38 |
2 files changed, 30 insertions, 15 deletions
diff --git a/MediaBrowser.Dlna/ContentDirectory/ControlHandler.cs b/MediaBrowser.Dlna/ContentDirectory/ControlHandler.cs index 563f9c59a..7a374aff3 100644 --- a/MediaBrowser.Dlna/ContentDirectory/ControlHandler.cs +++ b/MediaBrowser.Dlna/ContentDirectory/ControlHandler.cs @@ -241,7 +241,7 @@ namespace MediaBrowser.Dlna.ContentDirectory { new KeyValuePair<string,string>("Result", resXML), new KeyValuePair<string,string>("NumberReturned", provided.ToString(_usCulture)), - new KeyValuePair<string,string>("TotalMatches", id == "0" ? "1" :totalCount.ToString(_usCulture)), + new KeyValuePair<string,string>("TotalMatches", DidlBuilder.IsIdRoot(id) ? "1" :totalCount.ToString(_usCulture)), new KeyValuePair<string,string>("UpdateID", _systemUpdateId.ToString(_usCulture)) }; } @@ -535,10 +535,7 @@ namespace MediaBrowser.Dlna.ContentDirectory private BaseItem GetItemFromObjectId(string id, User user) { - return string.IsNullOrWhiteSpace(id) || string.Equals(id, "0", StringComparison.OrdinalIgnoreCase) - - // Samsung sometimes uses 1 as root - || string.Equals(id, "1", StringComparison.OrdinalIgnoreCase) + return DidlBuilder.IsIdRoot(id) ? user.RootFolder : ParseItemId(id, user); diff --git a/MediaBrowser.Dlna/Didl/DidlBuilder.cs b/MediaBrowser.Dlna/Didl/DidlBuilder.cs index 7f9428da5..53fac9a93 100644 --- a/MediaBrowser.Dlna/Didl/DidlBuilder.cs +++ b/MediaBrowser.Dlna/Didl/DidlBuilder.cs @@ -362,28 +362,46 @@ namespace MediaBrowser.Dlna.Didl container.AppendChild(res); } + public static bool IsIdRoot(string id) + { + if (string.IsNullOrWhiteSpace(id) || + + string.Equals(id, "0", StringComparison.OrdinalIgnoreCase) + + // Samsung sometimes uses 1 as root + || string.Equals(id, "1", StringComparison.OrdinalIgnoreCase)) + { + return true; + } + + return false; + } + public XmlElement GetFolderElement(XmlDocument doc, Folder folder, int childCount, Filter filter, string requestedId = null) { var container = doc.CreateElement(string.Empty, "container", NS_DIDL); container.SetAttribute("restricted", "0"); container.SetAttribute("searchable", "1"); container.SetAttribute("childCount", childCount.ToString(_usCulture)); - container.SetAttribute("id", folder.Id.ToString("N")); - var parent = folder.Parent; - if (parent == null) + if (string.Equals(requestedId, "0")) { - container.SetAttribute("parentID", "0"); + container.SetAttribute("id", "0"); + container.SetAttribute("parentID", "-1"); } else { - container.SetAttribute("parentID", parent.Id.ToString("N")); - } + container.SetAttribute("id", folder.Id.ToString("N")); - if (requestedId == "0") - { - container.SetAttribute("id","0"); - container.SetAttribute("parentID", "-1"); + var parent = folder.Parent; + if (parent == null) + { + container.SetAttribute("parentID", "0"); + } + else + { + container.SetAttribute("parentID", parent.Id.ToString("N")); + } } AddCommonFields(folder, container, filter); |
