diff options
| author | Ionut Andrei Oanca <oancaionutandrei@gmail.com> | 2020-11-15 17:03:27 +0100 |
|---|---|---|
| committer | Ionut Andrei Oanca <oancaionutandrei@gmail.com> | 2020-11-15 17:30:28 +0100 |
| commit | c7e53bce2fa43ad38807a0589e1bc020237e49c6 (patch) | |
| tree | af484c31dc4b762aba404a28462a3cae8c23f5b5 /MediaBrowser.Controller/SyncPlay/Queue/PlayQueueManager.cs | |
| parent | 5d77f422f0e4998130f1defebd08e053188a1a25 (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.cs | 22 |
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) |
