diff --git a/osu.Game/Beatmaps/WorkingBeatmap.cs b/osu.Game/Beatmaps/WorkingBeatmap.cs
index bef258753e..e0eeaf6db0 100644
--- a/osu.Game/Beatmaps/WorkingBeatmap.cs
+++ b/osu.Game/Beatmaps/WorkingBeatmap.cs
@@ -298,7 +298,6 @@ namespace osu.Game.Beatmaps
/// Get the loaded audio track instance. must have first been called.
/// This generally happens via MusicController when changing the global beatmap.
///
- [NotNull]
public Track Track
{
get
diff --git a/osu.Game/Screens/Edit/Editor.cs b/osu.Game/Screens/Edit/Editor.cs
index 434683a016..a4c331c4e0 100644
--- a/osu.Game/Screens/Edit/Editor.cs
+++ b/osu.Game/Screens/Edit/Editor.cs
@@ -17,6 +17,7 @@ using osu.Framework.Input.Bindings;
using osu.Framework.Input.Events;
using osu.Framework.Logging;
using osu.Framework.Screens;
+using osu.Framework.Timing;
using osu.Game.Beatmaps;
using osu.Game.Configuration;
using osu.Game.Graphics;
@@ -306,7 +307,11 @@ namespace osu.Game.Screens.Edit
///
/// If the beatmap's track has changed, this method must be called to keep the editor in a valid state.
///
- public void UpdateClockSource() => clock.ChangeSource(Beatmap.Value.Track);
+ public void UpdateClockSource()
+ {
+ var sourceClock = (IAdjustableClock)Beatmap.Value.Track ?? new StopwatchClock();
+ clock.ChangeSource(sourceClock);
+ }
protected void Save()
{
@@ -577,7 +582,7 @@ namespace osu.Game.Screens.Edit
private void resetTrack(bool seekToStart = false)
{
- Beatmap.Value.Track.Stop();
+ Beatmap.Value.Track?.Stop();
if (seekToStart)
{
diff --git a/osu.Game/Tests/Visual/EditorClockTestScene.cs b/osu.Game/Tests/Visual/EditorClockTestScene.cs
index 34393fba7d..79cfee8518 100644
--- a/osu.Game/Tests/Visual/EditorClockTestScene.cs
+++ b/osu.Game/Tests/Visual/EditorClockTestScene.cs
@@ -4,6 +4,7 @@
using osu.Framework.Allocation;
using osu.Framework.Bindables;
using osu.Framework.Input.Events;
+using osu.Framework.Timing;
using osu.Game.Beatmaps;
using osu.Game.Beatmaps.ControlPoints;
using osu.Game.Screens.Edit;
@@ -45,7 +46,7 @@ namespace osu.Game.Tests.Visual
private void beatmapChanged(ValueChangedEvent e)
{
Clock.ControlPointInfo = e.NewValue.Beatmap.ControlPointInfo;
- Clock.ChangeSource(e.NewValue.Track);
+ Clock.ChangeSource((IAdjustableClock)e.NewValue.Track ?? new StopwatchClock());
Clock.ProcessFrame();
}