diff --git a/RedBookPlayer.Models/Hardware/Player.cs b/RedBookPlayer.Models/Hardware/Player.cs
index 12377df..bc67f86 100644
--- a/RedBookPlayer.Models/Hardware/Player.cs
+++ b/RedBookPlayer.Models/Hardware/Player.cs
@@ -761,6 +761,10 @@ namespace RedBookPlayer.Models.Hardware
/// Disc number to attempt to load
public void SelectDisc(int discNumber)
{
+ // If the disc didn't change, don't do anything
+ if(_currentDisc == discNumber)
+ return;
+
PlayerState wasPlaying = PlayerState;
if (wasPlaying == PlayerState.Playing)
Stop();
@@ -802,6 +806,13 @@ namespace RedBookPlayer.Models.Hardware
/// True if index changes can trigger a track change, false otherwise
public void SelectIndex(ushort index, bool changeTrack)
{
+ if(_opticalDiscs[CurrentDisc] == null || !_opticalDiscs[CurrentDisc].Initialized)
+ return;
+
+ // If the index didn't change, don't do anything
+ if(_currentTrackIndex == index)
+ return;
+
PlayerState wasPlaying = PlayerState;
if (wasPlaying == PlayerState.Playing)
Pause();
@@ -876,6 +887,10 @@ namespace RedBookPlayer.Models.Hardware
if(_opticalDiscs[CurrentDisc] == null || !_opticalDiscs[CurrentDisc].Initialized)
return false;
+ // If the disc didn't change, don't do anything
+ if(_currentTrackNumber == trackNumber)
+ return false;
+
PlayerState wasPlaying = PlayerState;
if(wasPlaying == PlayerState.Playing)
Pause();