Ensure pause sample loop is stopped on exiting player

This commit is contained in:
Dean Herbert 2023-02-06 18:22:51 +09:00
parent c078d3a344
commit b83c8443ea
2 changed files with 11 additions and 0 deletions

View File

@ -44,6 +44,14 @@ namespace osu.Game.Screens.Play
}); });
} }
public void StopAllSamples()
{
if (!IsLoaded)
return;
pauseLoop.Stop();
}
protected override void PopIn() protected override void PopIn()
{ {
base.PopIn(); base.PopIn();

View File

@ -1073,7 +1073,10 @@ namespace osu.Game.Screens.Play
public override bool OnExiting(ScreenExitEvent e) public override bool OnExiting(ScreenExitEvent e)
{ {
screenSuspension?.RemoveAndDisposeImmediately(); screenSuspension?.RemoveAndDisposeImmediately();
// Eagerly clean these up as disposal of child components is asynchronous and may leave sounds playing beyond user expectations.
failAnimationLayer?.Stop(); failAnimationLayer?.Stop();
PauseOverlay.StopAllSamples();
if (LoadedBeatmapSuccessfully) if (LoadedBeatmapSuccessfully)
{ {