aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVasily <just.one.man@yandex.ru>2020-02-28 17:27:16 +0300
committerVasily <just.one.man@yandex.ru>2020-02-28 17:27:16 +0300
commit7f38af3701aa06e2281799ffeac59e875eaec5db (patch)
tree89eaa8e7449806b03de6342ed80974c80fe9ebe1
parentf81cd037f0a66e573262e3f666d6c8019b031966 (diff)
Remove custom queue class as it is not needed
-rw-r--r--MediaBrowser.Controller/Entities/Folder.cs45
1 files changed, 10 insertions, 35 deletions
diff --git a/MediaBrowser.Controller/Entities/Folder.cs b/MediaBrowser.Controller/Entities/Folder.cs
index b134dfde2..cda4c31ad 100644
--- a/MediaBrowser.Controller/Entities/Folder.cs
+++ b/MediaBrowser.Controller/Entities/Folder.cs
@@ -807,52 +807,27 @@ namespace MediaBrowser.Controller.Entities
return false;
}
- private class OneTimeQueue<T>
- {
- private List<T> items;
- private int start;
- public OneTimeQueue(int capacity)
- {
- items = new List<T>(capacity);
- start = 0;
- }
- public OneTimeQueue(int capacity, T first)
- {
- items = new List<T>(capacity);
- items.Add(first);
- start = 0;
- }
- public void Enqueue(T item)
- {
- items.Add(item);
- }
- public T Dequeue()
- {
- start++;
- return items[start - 1];
- }
- }
-
private IReadOnlyList<BaseItem> SortItemsByRequest(InternalItemsQuery query, IReadOnlyList<BaseItem> items)
{
var ids = query.ItemIds;
- var positions = new Dictionary<Guid, OneTimeQueue<int>>(ids.Length);
+ int size = items.Count;
+
+ // ids can potentially contain non-unique guids, but query result cannot,
+ // so we include only first occurrence of each guid
+ var positions = new Dictionary<Guid, int>(size);
+ int index = 0;
for (int i = 0; i < ids.Length; i++)
{
- if (positions.TryGetValue(ids[i], out var q))
- {
- q.Enqueue(i);
- }
- else
+ if (positions.TryAdd(ids[i], index))
{
- positions.Add(ids[i], new OneTimeQueue<int>(4 /* wild guess */, i));
+ index++;
}
}
- var newItems = new BaseItem[ids.Count];
+ var newItems = new BaseItem[size];
foreach(var item in items)
{
- newItems[positions[item.Id].Dequeue()] = item;
+ newItems[positions[item.Id]] = item;
}
return newItems;
}