From 6433f29651855fe8a5379d8b8e8f9635b256a568 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bart=C5=82omiej=20Dach?= Date: Mon, 8 Jul 2024 13:15:24 +0200 Subject: [PATCH 1/2] Add failing test case --- .../Visual/Editing/TestSceneEditorClock.cs | 38 +++++++++++++------ 1 file changed, 26 insertions(+), 12 deletions(-) diff --git a/osu.Game.Tests/Visual/Editing/TestSceneEditorClock.cs b/osu.Game.Tests/Visual/Editing/TestSceneEditorClock.cs index ed58c59ff0..54cc86bc6b 100644 --- a/osu.Game.Tests/Visual/Editing/TestSceneEditorClock.cs +++ b/osu.Game.Tests/Visual/Editing/TestSceneEditorClock.cs @@ -1,10 +1,13 @@ // Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. // See the LICENCE file in the repository root for full licence text. +using System.Linq; using NUnit.Framework; using osu.Framework.Allocation; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; +using osu.Framework.Testing; +using osu.Game.Graphics.UserInterface; using osu.Game.Rulesets.Osu; using osu.Game.Screens.Edit; using osu.Game.Screens.Edit.Components; @@ -19,9 +22,10 @@ namespace osu.Game.Tests.Visual.Editing [Cached] private EditorBeatmap editorBeatmap = new EditorBeatmap(new TestBeatmap(new OsuRuleset().RulesetInfo)); - public TestSceneEditorClock() + [SetUpSteps] + public void SetUpSteps() { - Add(new FillFlowContainer + AddStep("create content", () => Add(new FillFlowContainer { RelativeSizeAxes = Axes.Both, Children = new Drawable[] @@ -39,19 +43,17 @@ namespace osu.Game.Tests.Visual.Editing Size = new Vector2(200, 100) } } + })); + AddStep("set working beatmap", () => + { + Beatmap.Disabled = false; + Beatmap.Value = CreateWorkingBeatmap(new OsuRuleset().RulesetInfo); + // ensure that music controller does not change this beatmap due to it + // completing naturally as part of the test. + Beatmap.Disabled = true; }); } - protected override void LoadComplete() - { - base.LoadComplete(); - - Beatmap.Value = CreateWorkingBeatmap(new OsuRuleset().RulesetInfo); - // ensure that music controller does not change this beatmap due to it - // completing naturally as part of the test. - Beatmap.Disabled = true; - } - [Test] public void TestStopAtTrackEnd() { @@ -102,6 +104,18 @@ namespace osu.Game.Tests.Visual.Editing AddUntilStep("time is clamped to track length", () => EditorClock.CurrentTime, () => Is.EqualTo(EditorClock.TrackLength)); } + [Test] + public void TestAdjustmentsRemovedOnDisposal() + { + AddStep("reset clock", () => EditorClock.Seek(0)); + + AddStep("set 0.25x speed", () => this.ChildrenOfType>().First().Current.Value = 0.25); + AddAssert("track has 0.25x tempo", () => Beatmap.Value.Track.AggregateTempo.Value, () => Is.EqualTo(0.25)); + + AddStep("dispose playback control", () => Clear(disposeChildren: true)); + AddAssert("track has 1x tempo", () => Beatmap.Value.Track.AggregateTempo.Value, () => Is.EqualTo(1)); + } + protected override void Dispose(bool isDisposing) { Beatmap.Disabled = false; From 0fe2c45e1d61fd18aadcfa52762a4600b9f952ee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bart=C5=82omiej=20Dach?= Date: Mon, 8 Jul 2024 13:15:50 +0200 Subject: [PATCH 2/2] Fix editor playback control not removing correct adjustment MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Closes https://github.com/ppy/osu/issues/28768. great job past me 🤦🤦🤦🤦🤦🤦🤦🤦🤦🤦🤦 --- osu.Game/Screens/Edit/Components/PlaybackControl.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/Screens/Edit/Components/PlaybackControl.cs b/osu.Game/Screens/Edit/Components/PlaybackControl.cs index 0546878788..6319dc892e 100644 --- a/osu.Game/Screens/Edit/Components/PlaybackControl.cs +++ b/osu.Game/Screens/Edit/Components/PlaybackControl.cs @@ -105,7 +105,7 @@ namespace osu.Game.Screens.Edit.Components protected override void Dispose(bool isDisposing) { - Track.Value?.RemoveAdjustment(AdjustableProperty.Frequency, tempoAdjustment); + Track.Value?.RemoveAdjustment(AdjustableProperty.Tempo, tempoAdjustment); base.Dispose(isDisposing); }