diff --git a/osu.Game/Overlays/MusicController.cs b/osu.Game/Overlays/MusicController.cs
index 8af295dfe8..da87336039 100644
--- a/osu.Game/Overlays/MusicController.cs
+++ b/osu.Game/Overlays/MusicController.cs
@@ -70,7 +70,11 @@ namespace osu.Game.Overlays
///
/// Forcefully reload the current 's track from disk.
///
- public void ReloadCurrentTrack() => changeTrack();
+ public void ReloadCurrentTrack()
+ {
+ changeTrack();
+ TrackChanged?.Invoke(current, TrackChangeDirection.None);
+ }
///
/// Returns whether the beatmap track is playing.
diff --git a/osu.Game/Screens/Edit/Editor.cs b/osu.Game/Screens/Edit/Editor.cs
index 3e3940c5ba..9e9cd8e3b7 100644
--- a/osu.Game/Screens/Edit/Editor.cs
+++ b/osu.Game/Screens/Edit/Editor.cs
@@ -329,6 +329,9 @@ namespace osu.Game.Screens.Edit
changeHandler?.CanRedo.BindValueChanged(v => redoMenuItem.Action.Disabled = !v.NewValue, true);
}
+ [Resolved]
+ private MusicController musicController { get; set; }
+
protected override void LoadComplete()
{
base.LoadComplete();
@@ -336,12 +339,18 @@ namespace osu.Game.Screens.Edit
Mode.Value = isNewBeatmap ? EditorScreenMode.SongSetup : EditorScreenMode.Compose;
Mode.BindValueChanged(onModeChanged, true);
+
+ musicController.TrackChanged += onTrackChanged;
}
- ///
- /// 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);
+ protected override void Dispose(bool isDisposing)
+ {
+ base.Dispose(isDisposing);
+
+ musicController.TrackChanged -= onTrackChanged;
+ }
+
+ private void onTrackChanged(WorkingBeatmap working, TrackChangeDirection direction) => clock.ChangeSource(working.Track);
///
/// Creates an instance representing the current state of the editor.
diff --git a/osu.Game/Screens/Edit/Setup/ResourcesSection.cs b/osu.Game/Screens/Edit/Setup/ResourcesSection.cs
index 1f8381e1ed..44bc2126fb 100644
--- a/osu.Game/Screens/Edit/Setup/ResourcesSection.cs
+++ b/osu.Game/Screens/Edit/Setup/ResourcesSection.cs
@@ -118,8 +118,6 @@ namespace osu.Game.Screens.Edit.Setup
working.Value.Metadata.AudioFile = destination.Name;
music.ReloadCurrentTrack();
-
- editor?.UpdateClockSource();
return true;
}