Fix repeat mode handling

This commit is contained in:
Matt Nadareski
2021-10-06 11:51:37 -07:00
parent 9c63904245
commit b789b5cf47

View File

@@ -730,7 +730,7 @@ namespace RedBookPlayer.Models.Hardware
} }
// If we are supposed to change tracks, get the next one from the list // If we are supposed to change tracks, get the next one from the list
if(CurrentTrackNumber != previousTrack) if(CurrentTrackNumber != previousTrack && !ShouldInvokePlaybackModes)
NextTrack(); NextTrack();
} }
@@ -1219,20 +1219,20 @@ namespace RedBookPlayer.Models.Hardware
if(e.PropertyName != nameof(ShouldInvokePlaybackModes)) if(e.PropertyName != nameof(ShouldInvokePlaybackModes))
return; return;
// Always stop before doing anything else // Always pause before doing anything else
PlayerState wasPlaying = PlayerState; PlayerState wasPlaying = PlayerState;
await Dispatcher.UIThread.InvokeAsync(Stop); await Dispatcher.UIThread.InvokeAsync(Pause);
switch(RepeatMode) switch(RepeatMode)
{ {
case RepeatMode.None: case RepeatMode.None:
// No-op await Dispatcher.UIThread.InvokeAsync(Stop);
break; break;
case RepeatMode.Single: case RepeatMode.Single:
_opticalDiscs[CurrentDisc].LoadTrack(CurrentTrackNumber); _opticalDiscs[CurrentDisc].LoadTrack(CurrentTrackNumber);
break; break;
case RepeatMode.All: case RepeatMode.All:
SelectRelativeTrack(0); NextTrack();
break; break;
} }