From 6f947cacbd61b57a4e63db452bd06dbb52563dee Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Fri, 15 Oct 2021 21:22:38 +0900 Subject: [PATCH] Fix test failures --- osu.Game/Screens/Play/FailAnimation.cs | 22 +++++++++++++++++++--- osu.Game/Screens/Play/Player.cs | 2 +- 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/osu.Game/Screens/Play/FailAnimation.cs b/osu.Game/Screens/Play/FailAnimation.cs index 1e2e020824..30524ba32f 100644 --- a/osu.Game/Screens/Play/FailAnimation.cs +++ b/osu.Game/Screens/Play/FailAnimation.cs @@ -33,6 +33,8 @@ namespace osu.Game.Screens.Play private readonly DrawableRuleset drawableRuleset; private readonly BindableDouble trackFreq = new BindableDouble(1); + private Container filters; + private Box failFlash; private Track track; @@ -66,8 +68,14 @@ namespace osu.Game.Screens.Play AddRangeInternal(new Drawable[] { - failLowPassFilter = new AudioFilter(audio.TrackMixer), - failHighPassFilter = new AudioFilter(audio.TrackMixer, BQFType.HighPass), + filters = new Container + { + Children = new Drawable[] + { + failLowPassFilter = new AudioFilter(audio.TrackMixer), + failHighPassFilter = new AudioFilter(audio.TrackMixer, BQFType.HighPass), + }, + }, Content, failFlash = new Box { @@ -122,6 +130,14 @@ namespace osu.Game.Screens.Play Content.FadeColour(Color4.Gray, duration); } + public void RemoveFilters() + { + RemoveInternal(filters); + filters.Dispose(); + + track?.RemoveAdjustment(AdjustableProperty.Frequency, trackFreq); + } + protected override void Update() { base.Update(); @@ -172,7 +188,7 @@ namespace osu.Game.Screens.Play protected override void Dispose(bool isDisposing) { base.Dispose(isDisposing); - track?.RemoveAdjustment(AdjustableProperty.Frequency, trackFreq); + RemoveFilters(); } } } diff --git a/osu.Game/Screens/Play/Player.cs b/osu.Game/Screens/Play/Player.cs index b4bd658a83..93815b7064 100644 --- a/osu.Game/Screens/Play/Player.cs +++ b/osu.Game/Screens/Play/Player.cs @@ -965,7 +965,7 @@ namespace osu.Game.Screens.Play public override bool OnExiting(IScreen next) { screenSuspension?.RemoveAndDisposeImmediately(); - failAnimationLayer?.RemoveAndDisposeImmediately(); + failAnimationLayer?.RemoveFilters(); // if arriving here and the results screen preparation task hasn't run, it's safe to say the user has not completed the beatmap. if (prepareScoreForDisplayTask == null)