|  | @@ -23,6 +23,7 @@ using System.Text;
 | 
	
		
			
				|  |  |  using System.Threading;
 | 
	
		
			
				|  |  |  using System.Threading.Tasks;
 | 
	
		
			
				|  |  |  using System.Xml;
 | 
	
		
			
				|  |  | +using MediaBrowser.Controller.Entities.Audio;
 | 
	
		
			
				|  |  |  using MediaBrowser.Controller.MediaEncoding;
 | 
	
		
			
				|  |  |  using MediaBrowser.Model.Globalization;
 | 
	
		
			
				|  |  |  using MediaBrowser.Model.Xml;
 | 
	
	
		
			
				|  | @@ -492,29 +493,53 @@ namespace Emby.Dlna.ContentDirectory
 | 
	
		
			
				|  |  |                  return ApplyPaging(new QueryResult<ServerItem>(), startIndex, limit);
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -            var folder = (Folder)item;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -            var sortOrders = new List<string>();
 | 
	
		
			
				|  |  | -            if (!folder.IsPreSorted)
 | 
	
		
			
				|  |  | +            if (item is MusicGenre)
 | 
	
		
			
				|  |  |              {
 | 
	
		
			
				|  |  | -                sortOrders.Add(ItemSortBy.SortName);
 | 
	
		
			
				|  |  | +                return GetMusicGenreItems(item, null, user, sort, startIndex, limit);
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -            var queryResult = await folder.GetItems(new InternalItemsQuery
 | 
	
		
			
				|  |  | +            var folder = (Folder)item;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            var query = new InternalItemsQuery
 | 
	
		
			
				|  |  |              {
 | 
	
		
			
				|  |  |                  Limit = limit,
 | 
	
		
			
				|  |  |                  StartIndex = startIndex,
 | 
	
		
			
				|  |  | -                SortBy = sortOrders.ToArray(),
 | 
	
		
			
				|  |  | -                SortOrder = sort.SortOrder,
 | 
	
		
			
				|  |  |                  User = user,
 | 
	
		
			
				|  |  |                  IsMissing = false,
 | 
	
		
			
				|  |  | -                PresetViews = new[] { CollectionType.Movies, CollectionType.TvShows, CollectionType.Music },
 | 
	
		
			
				|  |  | -                ExcludeItemTypes = new[] { typeof(Game).Name, typeof(Book).Name },
 | 
	
		
			
				|  |  | +                PresetViews = new[] {CollectionType.Movies, CollectionType.TvShows, CollectionType.Music},
 | 
	
		
			
				|  |  | +                ExcludeItemTypes = new[] {typeof (Game).Name, typeof (Book).Name},
 | 
	
		
			
				|  |  |                  IsPlaceHolder = false
 | 
	
		
			
				|  |  | +            };
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            SetSorting(query, sort, folder.IsPreSorted);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            var queryResult = await folder.GetItems(query).ConfigureAwait(false);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            return ToResult(queryResult);
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        private QueryResult<ServerItem> GetMusicGenreItems(BaseItem item, Guid? parentId, User user, SortCriteria sort, int? startIndex, int? limit)
 | 
	
		
			
				|  |  | +        {
 | 
	
		
			
				|  |  | +            var query = new InternalItemsQuery(user)
 | 
	
		
			
				|  |  | +            {
 | 
	
		
			
				|  |  | +                Recursive = true,
 | 
	
		
			
				|  |  | +                ParentId = parentId,
 | 
	
		
			
				|  |  | +                GenreIds = new[] {item.Id.ToString("N")},
 | 
	
		
			
				|  |  | +                IncludeItemTypes = new[] {typeof (MusicAlbum).Name},
 | 
	
		
			
				|  |  | +                Limit = limit,
 | 
	
		
			
				|  |  | +                StartIndex = startIndex
 | 
	
		
			
				|  |  | +            };
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -            }).ConfigureAwait(false);
 | 
	
		
			
				|  |  | +            SetSorting(query, sort, false);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -            var serverItems = queryResult
 | 
	
		
			
				|  |  | +            var result = _libraryManager.GetItemsResult(query);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            return ToResult(result);
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        private QueryResult<ServerItem> ToResult(QueryResult<BaseItem> result)
 | 
	
		
			
				|  |  | +        {
 | 
	
		
			
				|  |  | +            var serverItems = result
 | 
	
		
			
				|  |  |                  .Items
 | 
	
		
			
				|  |  |                  .Select(i => new ServerItem
 | 
	
		
			
				|  |  |                  {
 | 
	
	
		
			
				|  | @@ -524,11 +549,23 @@ namespace Emby.Dlna.ContentDirectory
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |              return new QueryResult<ServerItem>
 | 
	
		
			
				|  |  |              {
 | 
	
		
			
				|  |  | -                TotalRecordCount = queryResult.TotalRecordCount,
 | 
	
		
			
				|  |  | +                TotalRecordCount = result.TotalRecordCount,
 | 
	
		
			
				|  |  |                  Items = serverItems
 | 
	
		
			
				|  |  |              };
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +        private void SetSorting(InternalItemsQuery query, SortCriteria sort, bool isPreSorted)
 | 
	
		
			
				|  |  | +        {
 | 
	
		
			
				|  |  | +            var sortOrders = new List<string>();
 | 
	
		
			
				|  |  | +            if (!isPreSorted)
 | 
	
		
			
				|  |  | +            {
 | 
	
		
			
				|  |  | +                sortOrders.Add(ItemSortBy.SortName);
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            query.SortBy = sortOrders.ToArray();
 | 
	
		
			
				|  |  | +            query.SortOrder = sort.SortOrder;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |          private QueryResult<ServerItem> GetItemsFromPerson(Person person, User user, int? startIndex, int? limit)
 | 
	
		
			
				|  |  |          {
 | 
	
		
			
				|  |  |              var itemsResult = _libraryManager.GetItemsResult(new InternalItemsQuery(user)
 |