diff --git a/Vocaluxe/Base/CBackgroundMusic.cs b/Vocaluxe/Base/CBackgroundMusic.cs index 6f050db8..662a0c0d 100644 --- a/Vocaluxe/Base/CBackgroundMusic.cs +++ b/Vocaluxe/Base/CBackgroundMusic.cs @@ -67,11 +67,10 @@ namespace Vocaluxe.Base get { return _Disabled; } set { + if (Disabled == value) + return; _Disabled = value; - if (_Disabled) - Pause(); - else - Play(); + Pause(); } } @@ -191,7 +190,7 @@ namespace Vocaluxe.Base { _PreviewPlayer.Stop(); _PlaysPreview = false; - Play(); + Pause(); } else { @@ -202,13 +201,17 @@ namespace Vocaluxe.Base public static void Pause() { - if (!IsPlaying) - return; - if (_PlaysPreview) + { + if (!_PreviewPlayer.SongLoaded) + return; _PreviewPlayer.TogglePause(); + } else - _SongPlayer.TogglePause(); + if (!_SongPlayer.SongLoaded) + Next(); + else + _SongPlayer.TogglePause(); } public static void Next() @@ -305,7 +308,10 @@ namespace Vocaluxe.Base public static void LoadPreview(CSong song, float start = 0f) { - Stop(); + if (!_PlaysPreview) + Pause(); + else + StopPreview(); if (song == null) return; diff --git a/Vocaluxe/Screens/CPopupScreenPlayerControl.cs b/Vocaluxe/Screens/CPopupScreenPlayerControl.cs index 208fc630..e0c1cdf2 100644 --- a/Vocaluxe/Screens/CPopupScreenPlayerControl.cs +++ b/Vocaluxe/Screens/CPopupScreenPlayerControl.cs @@ -115,7 +115,7 @@ namespace Vocaluxe.Screens if (_Buttons[_ButtonPrevious].Selected) CBackgroundMusic.Previous(); if (_Buttons[_ButtonPlay].Selected) - CBackgroundMusic.Play(); + CBackgroundMusic.Pause(); if (_Buttons[_ButtonPause].Selected) CBackgroundMusic.Pause(); if (_Buttons[_ButtonRepeat].Selected) @@ -143,7 +143,7 @@ namespace Vocaluxe.Screens if (_Buttons[_ButtonPrevious].Selected) CBackgroundMusic.Previous(); if (_Buttons[_ButtonPlay].Selected) - CBackgroundMusic.Play(); + CBackgroundMusic.Pause(); if (_Buttons[_ButtonPause].Selected) CBackgroundMusic.Pause(); if (_Buttons[_ButtonRepeat].Selected) diff --git a/Vocaluxe/Screens/CScreenSong.cs b/Vocaluxe/Screens/CScreenSong.cs index d7722f9a..ace7503d 100644 --- a/Vocaluxe/Screens/CScreenSong.cs +++ b/Vocaluxe/Screens/CScreenSong.cs @@ -714,7 +714,7 @@ namespace Vocaluxe.Screens _SongMenu.OnHide(); - if (CGraphics.NextScreen != EScreens.ScreenNames || CConfig.BackgroundMusic == EBackgroundMusicOffOn.TR_CONFIG_OFF) + if (CGraphics.NextScreen != EScreens.ScreenNames) { CBackgroundMusic.Disabled = false; CSound.SetGlobalVolume(CConfig.BackgroundMusicVolume); diff --git a/VocaluxeLib/Menu/SongMenu/CSongMenuFramework.cs b/VocaluxeLib/Menu/SongMenu/CSongMenuFramework.cs index b4d0cff4..c1bd939f 100644 --- a/VocaluxeLib/Menu/SongMenu/CSongMenuFramework.cs +++ b/VocaluxeLib/Menu/SongMenu/CSongMenuFramework.cs @@ -349,40 +349,13 @@ namespace VocaluxeLib.Menu.SongMenu { if (!_Initialized) return; - /* - if (_PreviewSongStream == -1 || _PreviewVideoStream == -1) - return; - - if (CBase.Video.IsFinished(_PreviewVideoStream) || CBase.Sound.IsFinished(_PreviewSongStream)) - { - CBase.Video.Close(_PreviewVideoStream); - _PreviewVideoStream = -1; - return; - } - - float time = CBase.Sound.GetPosition(_PreviewSongStream); - - float vtime; - if (CBase.Video.GetFrame(_PreviewVideoStream, ref _Vidtex, time, out vtime)) - { - if (_Vidtex != null) - { - if (_VideoFading != null) - { - bool finished; - _Vidtex.Color.A = _VideoFading.GetValue(out finished); - if (finished) - _VideoFading = null; - } - } - }*/ } public virtual void OnShow() {} public virtual void OnHide() { - if(CBase.Graphics.GetNextScreen() != EScreens.ScreenNames || CBase.Config.GetBackgroundMusicStatus() == EBackgroundMusicOffOn.TR_CONFIG_OFF) + if(CBase.Graphics.GetNextScreen() != EScreens.ScreenNames) _ResetPreview(); } @@ -513,6 +486,9 @@ namespace VocaluxeLib.Menu.SongMenu protected void _ResetPreview(bool playBGagain = true) { + if (_PreviewNrInternal == -1) + return; + CBase.BackgroundMusic.StopPreview(); if (playBGagain)