2
0
Эх сурвалжийг харах

Remove custom queue class as it is not needed

Vasily 5 жил өмнө
parent
commit
7f38af3701

+ 10 - 35
MediaBrowser.Controller/Entities/Folder.cs

@@ -807,52 +807,27 @@ namespace MediaBrowser.Controller.Entities
             return false;
             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)
         private IReadOnlyList<BaseItem> SortItemsByRequest(InternalItemsQuery query, IReadOnlyList<BaseItem> items)
         {
         {
             var ids = query.ItemIds;
             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++)
             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)
             foreach(var item in items)
             {
             {
-                newItems[positions[item.Id].Dequeue()] = item;
+                newItems[positions[item.Id]] = item;
             }
             }
             return newItems;
             return newItems;
         }
         }