Skip to content

Commit

Permalink
Merge pull request #28770 from bdach/really-now
Browse files Browse the repository at this point in the history
Fix editor playback control not removing correct adjustment
  • Loading branch information
smoogipoo committed Jul 8, 2024
2 parents c0a1696 + 0fe2c45 commit 5cae005
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 13 deletions.
38 changes: 26 additions & 12 deletions osu.Game.Tests/Visual/Editing/TestSceneEditorClock.cs
Original file line number Diff line number Diff line change
@@ -1,10 +1,13 @@
// Copyright (c) ppy Pty Ltd <contact@ppy.sh>. 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;
Expand All @@ -19,9 +22,10 @@ public partial class TestSceneEditorClock : EditorClockTestScene
[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[]
Expand All @@ -39,19 +43,17 @@ public TestSceneEditorClock()
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()
{
Expand Down Expand Up @@ -102,6 +104,18 @@ public void TestClampWhenSeekOutsideBeatmapBounds()
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<OsuTabControl<double>>().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;
Expand Down
2 changes: 1 addition & 1 deletion osu.Game/Screens/Edit/Components/PlaybackControl.cs
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,7 @@ protected override void LoadComplete()

protected override void Dispose(bool isDisposing)
{
Track.Value?.RemoveAdjustment(AdjustableProperty.Frequency, tempoAdjustment);
Track.Value?.RemoveAdjustment(AdjustableProperty.Tempo, tempoAdjustment);

base.Dispose(isDisposing);
}
Expand Down

0 comments on commit 5cae005

Please sign in to comment.