diff --git a/osu.Game/Screens/Play/Player.cs b/osu.Game/Screens/Play/Player.cs index b106ea60c6..d45216a5f7 100644 --- a/osu.Game/Screens/Play/Player.cs +++ b/osu.Game/Screens/Play/Player.cs @@ -222,6 +222,12 @@ namespace osu.Game.Screens.Play if (IsPaused) Pause(); else Resume(); } + protected override void Dispose(bool isDisposing) + { + base.Dispose(isDisposing); + playerInputManager?.Dispose(); + } + public void Restart() { sourceClock.Stop(); // If the clock is running and Restart is called the game will lag until relaunch @@ -312,6 +318,9 @@ namespace osu.Game.Screens.Play } else { + FadeOut(250); + Content.ScaleTo(0.7f, 750, EasingTypes.InQuint); + dimLevel.ValueChanged -= dimChanged; Background?.FadeTo(1f, 200); return base.OnExiting(next); diff --git a/osu.Game/Screens/Play/PlayerLoader.cs b/osu.Game/Screens/Play/PlayerLoader.cs index f14ae65f68..ba7c392b84 100644 --- a/osu.Game/Screens/Play/PlayerLoader.cs +++ b/osu.Game/Screens/Play/PlayerLoader.cs @@ -89,6 +89,12 @@ namespace osu.Game.Screens.Play { Content.ScaleTo(0.7f, 150, EasingTypes.InQuint); FadeOut(150); + + //this is required to clean up the InputManager in Player. + //can be removed once we solve that one. + if (player != null && player.LoadState != LoadState.Alive) + player.Dispose(); + return base.OnExiting(next); }