aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Controller/SyncPlay/Queue/PlayQueueManager.cs
diff options
context:
space:
mode:
authorIonut Andrei Oanca <oancaionutandrei@gmail.com>2020-11-15 17:03:27 +0100
committerIonut Andrei Oanca <oancaionutandrei@gmail.com>2020-11-15 17:30:28 +0100
commitc7e53bce2fa43ad38807a0589e1bc020237e49c6 (patch)
treeaf484c31dc4b762aba404a28462a3cae8c23f5b5 /MediaBrowser.Controller/SyncPlay/Queue/PlayQueueManager.cs
parent5d77f422f0e4998130f1defebd08e053188a1a25 (diff)
Patch data-races and minor changes in SyncPlay
Diffstat (limited to 'MediaBrowser.Controller/SyncPlay/Queue/PlayQueueManager.cs')
-rw-r--r--MediaBrowser.Controller/SyncPlay/Queue/PlayQueueManager.cs22
1 files changed, 10 insertions, 12 deletions
diff --git a/MediaBrowser.Controller/SyncPlay/Queue/PlayQueueManager.cs b/MediaBrowser.Controller/SyncPlay/Queue/PlayQueueManager.cs
index 2d1d1533b..73457f447 100644
--- a/MediaBrowser.Controller/SyncPlay/Queue/PlayQueueManager.cs
+++ b/MediaBrowser.Controller/SyncPlay/Queue/PlayQueueManager.cs
@@ -94,7 +94,7 @@ namespace MediaBrowser.Controller.SyncPlay.Queue
/// Sets a new playlist. Playing item is reset.
/// </summary>
/// <param name="items">The new items of the playlist.</param>
- public void SetPlaylist(IEnumerable<Guid> items)
+ public void SetPlaylist(IReadOnlyList<Guid> items)
{
SortedPlaylist.Clear();
ShuffledPlaylist.Clear();
@@ -114,7 +114,7 @@ namespace MediaBrowser.Controller.SyncPlay.Queue
/// Appends new items to the playlist. The specified order is mantained.
/// </summary>
/// <param name="items">The items to add to the playlist.</param>
- public void Queue(IEnumerable<Guid> items)
+ public void Queue(IReadOnlyList<Guid> items)
{
var newItems = CreateQueueItemsFromArray(items);
@@ -209,7 +209,7 @@ namespace MediaBrowser.Controller.SyncPlay.Queue
/// Adds new items to the playlist right after the playing item. The specified order is mantained.
/// </summary>
/// <param name="items">The items to add to the playlist.</param>
- public void QueueNext(IEnumerable<Guid> items)
+ public void QueueNext(IReadOnlyList<Guid> items)
{
var newItems = CreateQueueItemsFromArray(items);
@@ -312,13 +312,12 @@ namespace MediaBrowser.Controller.SyncPlay.Queue
/// </summary>
/// <param name="playlistItemIds">The items to remove.</param>
/// <returns><c>true</c> if playing item got removed; <c>false</c> otherwise.</returns>
- public bool RemoveFromPlaylist(IEnumerable<string> playlistItemIds)
+ public bool RemoveFromPlaylist(IReadOnlyList<string> playlistItemIds)
{
var playingItem = GetPlayingItem();
- var playlistItemIdsList = playlistItemIds.ToList();
- SortedPlaylist.RemoveAll(item => playlistItemIdsList.Contains(item.PlaylistItemId));
- ShuffledPlaylist.RemoveAll(item => playlistItemIdsList.Contains(item.PlaylistItemId));
+ SortedPlaylist.RemoveAll(item => playlistItemIds.Contains(item.PlaylistItemId));
+ ShuffledPlaylist.RemoveAll(item => playlistItemIds.Contains(item.PlaylistItemId));
LastChange = DateTime.UtcNow;
@@ -369,8 +368,7 @@ namespace MediaBrowser.Controller.SyncPlay.Queue
var queueItem = playlist[oldIndex];
playlist.RemoveAt(oldIndex);
- newIndex = Math.Min(newIndex, playlist.Count);
- newIndex = Math.Max(newIndex, 0);
+ newIndex = Math.Clamp(newIndex, 0, playlist.Count);
playlist.Insert(newIndex, queueItem);
LastChange = DateTime.UtcNow;
@@ -489,7 +487,7 @@ namespace MediaBrowser.Controller.SyncPlay.Queue
}
else
{
- PlayingItemIndex--;
+ PlayingItemIndex = SortedPlaylist.Count - 1;
return false;
}
}
@@ -519,7 +517,7 @@ namespace MediaBrowser.Controller.SyncPlay.Queue
}
else
{
- PlayingItemIndex++;
+ PlayingItemIndex = 0;
return false;
}
}
@@ -558,7 +556,7 @@ namespace MediaBrowser.Controller.SyncPlay.Queue
/// Creates a list from the array of items. Each item is given an unique playlist identifier.
/// </summary>
/// <returns>The list of queue items.</returns>
- private List<QueueItem> CreateQueueItemsFromArray(IEnumerable<Guid> items)
+ private List<QueueItem> CreateQueueItemsFromArray(IReadOnlyList<Guid> items)
{
var list = new List<QueueItem>();
foreach (var item in items)