Browse Source

fixes

pull/2949/head
Jason Dove 2 weeks ago
parent
commit
2b693b064b
No known key found for this signature in database
  1. 2
      ErsatzTV.Core/Scheduling/ChronologicalMediaCollectionEnumerator.cs
  2. 2
      ErsatzTV.Core/Scheduling/CustomOrderCollectionEnumerator.cs
  3. 2
      ErsatzTV.Core/Scheduling/OrderedScheduleItemsEnumerator.cs
  4. 6
      ErsatzTV.Core/Scheduling/PlaylistEnumerator.cs
  5. 6
      ErsatzTV.Core/Scheduling/PlayoutBuilder.cs
  6. 2
      ErsatzTV.Core/Scheduling/RandomizedMediaCollectionEnumerator.cs
  7. 2
      ErsatzTV.Core/Scheduling/RandomizedRotatingMediaCollectionEnumerator.cs
  8. 2
      ErsatzTV.Core/Scheduling/SeasonEpisodeMediaCollectionEnumerator.cs
  9. 2
      ErsatzTV.Core/Scheduling/ShuffleInOrderCollectionEnumerator.cs
  10. 3
      ErsatzTV.Core/Scheduling/ShuffledMediaCollectionEnumerator.cs
  11. 2
      ErsatzTV.Core/Scheduling/ShuffledScheduleItemsEnumerator.cs
  12. 2
      ErsatzTV.Infrastructure/Scheduling/MultiEpisodeShuffleCollectionEnumerator.cs

2
ErsatzTV.Core/Scheduling/ChronologicalMediaCollectionEnumerator.cs

@ -22,7 +22,7 @@ public sealed class ChronologicalMediaCollectionEnumerator : IMediaCollectionEnu @@ -22,7 +22,7 @@ public sealed class ChronologicalMediaCollectionEnumerator : IMediaCollectionEnu
_lazyMediaItemGroupSize = new Lazy<Dictionary<int, int>>(CalculateMediaItemGroupSizes);
State = new CollectionEnumeratorState { Seed = state.Seed };
State = new CollectionEnumeratorState { Seed = state.Seed, Started = state.Started };
if (state.Index >= _sortedMediaItems.Count)
{

2
ErsatzTV.Core/Scheduling/CustomOrderCollectionEnumerator.cs

@ -25,7 +25,7 @@ public class CustomOrderCollectionEnumerator : IMediaCollectionEnumerator @@ -25,7 +25,7 @@ public class CustomOrderCollectionEnumerator : IMediaCollectionEnumerator
_lazyMinimumDuration = new Lazy<Option<TimeSpan>>(() =>
_sortedMediaItems.Bind(i => i.GetNonZeroDuration()).OrderBy(identity).HeadOrNone());
State = new CollectionEnumeratorState { Seed = state.Seed };
State = new CollectionEnumeratorState { Seed = state.Seed, Started = state.Started };
while (State.Index < state.Index)
{
MoveNext(Option<DateTimeOffset>.None);

2
ErsatzTV.Core/Scheduling/OrderedScheduleItemsEnumerator.cs

@ -13,7 +13,7 @@ public class OrderedScheduleItemsEnumerator : IScheduleItemsEnumerator @@ -13,7 +13,7 @@ public class OrderedScheduleItemsEnumerator : IScheduleItemsEnumerator
{
_sortedScheduleItems = scheduleItems.OrderBy(i => i.Index).ToList();
State = new CollectionEnumeratorState { Seed = state.Seed };
State = new CollectionEnumeratorState { Seed = state.Seed, Started = state.Started };
if (state.Index >= _sortedScheduleItems.Count)
{

6
ErsatzTV.Core/Scheduling/PlaylistEnumerator.cs

@ -178,7 +178,7 @@ public class PlaylistEnumerator : IMediaCollectionEnumerator @@ -178,7 +178,7 @@ public class PlaylistEnumerator : IMediaCollectionEnumerator
case PlaybackOrder.Chronological:
if (randomStartPoint)
{
initState.Index = random.Next(0, items.Count - 1);
initState.Index = items.Count > 0 ? random.Next(0, items.Count) : 0;
}
enumerator = new ChronologicalMediaCollectionEnumerator(items, initState);
@ -208,7 +208,7 @@ public class PlaylistEnumerator : IMediaCollectionEnumerator @@ -208,7 +208,7 @@ public class PlaylistEnumerator : IMediaCollectionEnumerator
case PlaybackOrder.SeasonEpisode:
if (randomStartPoint)
{
initState.Index = random.Next(0, items.Count - 1);
initState.Index = items.Count > 0 ? random.Next(0, items.Count) : 0;
}
enumerator = new SeasonEpisodeMediaCollectionEnumerator(items, initState);
@ -248,7 +248,7 @@ public class PlaylistEnumerator : IMediaCollectionEnumerator @@ -248,7 +248,7 @@ public class PlaylistEnumerator : IMediaCollectionEnumerator
result._sortedEnumerators = result.ShufflePlaylistItems();
}
result.State = new CollectionEnumeratorState { Seed = state.Seed };
result.State = new CollectionEnumeratorState { Seed = state.Seed, Started = state.Started };
result.EnumeratorIndex = 0;
// this was a bug when playlist enumerators were first added; shouldn't happen anymore

6
ErsatzTV.Core/Scheduling/PlayoutBuilder.cs

@ -1344,7 +1344,7 @@ public class PlayoutBuilder : IPlayoutBuilder @@ -1344,7 +1344,7 @@ public class PlayoutBuilder : IPlayoutBuilder
state = new CollectionEnumeratorState
{
Seed = state.Seed,
Index = random.Next(0, mediaItems.Count - 1)
Index = mediaItems.Count > 0 ? random.Next(0, mediaItems.Count) : 0
};
}
@ -1355,7 +1355,7 @@ public class PlayoutBuilder : IPlayoutBuilder @@ -1355,7 +1355,7 @@ public class PlayoutBuilder : IPlayoutBuilder
state = new CollectionEnumeratorState
{
Seed = state.Seed,
Index = random.Next(0, mediaItems.Count - 1)
Index = mediaItems.Count > 0 ? random.Next(0, mediaItems.Count) : 0
};
}
@ -1369,7 +1369,7 @@ public class PlayoutBuilder : IPlayoutBuilder @@ -1369,7 +1369,7 @@ public class PlayoutBuilder : IPlayoutBuilder
collectionKey,
cancellationToken),
state,
activeSchedule.RandomStartPoint,
randomStartPoint,
cancellationToken);
case PlaybackOrder.MultiEpisodeShuffle when
collectionKey.CollectionType == CollectionType.TelevisionShow &&

2
ErsatzTV.Core/Scheduling/RandomizedMediaCollectionEnumerator.cs

@ -21,7 +21,7 @@ public class RandomizedMediaCollectionEnumerator : IMediaCollectionEnumerator @@ -21,7 +21,7 @@ public class RandomizedMediaCollectionEnumerator : IMediaCollectionEnumerator
_mediaItems.Bind(i => i.GetNonZeroDuration()).OrderBy(identity).HeadOrNone());
_random = new Random(state.Seed);
State = new CollectionEnumeratorState { Seed = state.Seed };
State = new CollectionEnumeratorState { Seed = state.Seed, Started = state.Started };
// we want to move at least once so we start with a random item and not the first
// because _index defaults to 0
if (State.Index == state.Index)

2
ErsatzTV.Core/Scheduling/RandomizedRotatingMediaCollectionEnumerator.cs

@ -45,7 +45,7 @@ public class RandomizedRotatingMediaCollectionEnumerator : IMediaCollectionEnume @@ -45,7 +45,7 @@ public class RandomizedRotatingMediaCollectionEnumerator : IMediaCollectionEnume
_groupNumber = 0;
State = new CollectionEnumeratorState { Seed = state.Seed };
State = new CollectionEnumeratorState { Seed = state.Seed, Started = state.Started };
// we want to move at least once so we start with a random item and not the first
// because _index defaults to 0
if (State.Index == state.Index)

2
ErsatzTV.Core/Scheduling/SeasonEpisodeMediaCollectionEnumerator.cs

@ -21,7 +21,7 @@ public sealed class SeasonEpisodeMediaCollectionEnumerator : IMediaCollectionEnu @@ -21,7 +21,7 @@ public sealed class SeasonEpisodeMediaCollectionEnumerator : IMediaCollectionEnu
_lazyMinimumDuration = new Lazy<Option<TimeSpan>>(() =>
_sortedMediaItems.Bind(i => i.GetNonZeroDuration()).OrderBy(identity).HeadOrNone());
State = new CollectionEnumeratorState { Seed = state.Seed };
State = new CollectionEnumeratorState { Seed = state.Seed, Started = state.Started };
if (state.Index >= _sortedMediaItems.Count)
{

2
ErsatzTV.Core/Scheduling/ShuffleInOrderCollectionEnumerator.cs

@ -39,7 +39,7 @@ public class ShuffleInOrderCollectionEnumerator : IMediaCollectionEnumerator @@ -39,7 +39,7 @@ public class ShuffleInOrderCollectionEnumerator : IMediaCollectionEnumerator
new Lazy<Option<TimeSpan>>(() =>
_shuffled.Bind(i => i.GetNonZeroDuration()).OrderBy(identity).HeadOrNone());
State = new CollectionEnumeratorState { Seed = state.Seed };
State = new CollectionEnumeratorState { Seed = state.Seed, Started = state.Started };
while (State.Index < state.Index)
{
MoveNext(Option<DateTimeOffset>.None);

3
ErsatzTV.Core/Scheduling/ShuffledMediaCollectionEnumerator.cs

@ -36,7 +36,7 @@ public class ShuffledMediaCollectionEnumerator : IMediaCollectionEnumerator @@ -36,7 +36,7 @@ public class ShuffledMediaCollectionEnumerator : IMediaCollectionEnumerator
new Lazy<Option<TimeSpan>>(() =>
_shuffled.Bind(i => i.GetNonZeroDuration()).OrderBy(identity).HeadOrNone());
State = new CollectionEnumeratorState { Seed = state.Seed };
State = new CollectionEnumeratorState { Seed = state.Seed, Started = state.Started };
while (State.Index < state.Index)
{
MoveNext(Option<DateTimeOffset>.None);
@ -54,6 +54,7 @@ public class ShuffledMediaCollectionEnumerator : IMediaCollectionEnumerator @@ -54,6 +54,7 @@ public class ShuffledMediaCollectionEnumerator : IMediaCollectionEnumerator
State.Seed = state.Seed;
State.Index = state.Index;
State.Started = state.Started;
}
public string SchedulingContextName => "Shuffle";

2
ErsatzTV.Core/Scheduling/ShuffledScheduleItemsEnumerator.cs

@ -26,7 +26,7 @@ public class ShuffledScheduleItemsEnumerator : IScheduleItemsEnumerator @@ -26,7 +26,7 @@ public class ShuffledScheduleItemsEnumerator : IScheduleItemsEnumerator
_random = new CloneableRandom(state.Seed);
_shuffled = Shuffle(_scheduleItems, _random);
State = new CollectionEnumeratorState { Seed = state.Seed };
State = new CollectionEnumeratorState { Seed = state.Seed, Started = state.Started };
while (State.Index < state.Index)
{
MoveNext();

2
ErsatzTV.Infrastructure/Scheduling/MultiEpisodeShuffleCollectionEnumerator.cs

@ -83,7 +83,7 @@ public class MultiEpisodeShuffleCollectionEnumerator : IMediaCollectionEnumerato @@ -83,7 +83,7 @@ public class MultiEpisodeShuffleCollectionEnumerator : IMediaCollectionEnumerato
new Lazy<Option<TimeSpan>>(() =>
_shuffled.Bind(i => i.GetNonZeroDuration()).OrderBy(identity).HeadOrNone());
State = new CollectionEnumeratorState { Seed = state.Seed };
State = new CollectionEnumeratorState { Seed = state.Seed, Started = state.Started };
while (State.Index < state.Index)
{
MoveNext(Option<DateTimeOffset>.None);

Loading…
Cancel
Save