diff --git a/osu.Game/Screens/Edit/Compose/Components/Timeline/Timeline.cs b/osu.Game/Screens/Edit/Compose/Components/Timeline/Timeline.cs
index e1702d3eff..96c48c0ddc 100644
--- a/osu.Game/Screens/Edit/Compose/Components/Timeline/Timeline.cs
+++ b/osu.Game/Screens/Edit/Compose/Components/Timeline/Timeline.cs
@@ -30,6 +30,28 @@ namespace osu.Game.Screens.Edit.Compose.Components.Timeline
[Resolved]
private MusicController musicController { get; set; }
+ ///
+ /// The timeline's scroll position in the last frame.
+ ///
+ private float lastScrollPosition;
+
+ ///
+ /// The track time in the last frame.
+ ///
+ private double lastTrackTime;
+
+ ///
+ /// Whether the user is currently dragging the timeline.
+ ///
+ private bool handlingDragInput;
+
+ ///
+ /// Whether the track was playing before a user drag event.
+ ///
+ private bool trackWasPlaying;
+
+ private ITrack track;
+
public Timeline()
{
ZoomDuration = 200;
@@ -61,9 +83,10 @@ namespace osu.Game.Screens.Edit.Compose.Components.Timeline
Beatmap.BindValueChanged(b =>
{
waveform.Waveform = b.NewValue.Waveform;
- track = musicController.CurrentTrack;
+ track = b.NewValue.Track;
- if (track.Length > 0)
+ // todo: i don't think this is safe, the track may not be loaded yet.
+ if (b.NewValue.Track.Length > 0)
{
MaxZoom = getZoomLevelForVisibleMilliseconds(500);
MinZoom = getZoomLevelForVisibleMilliseconds(10000);
@@ -74,28 +97,6 @@ namespace osu.Game.Screens.Edit.Compose.Components.Timeline
private float getZoomLevelForVisibleMilliseconds(double milliseconds) => (float)(track.Length / milliseconds);
- ///
- /// The timeline's scroll position in the last frame.
- ///
- private float lastScrollPosition;
-
- ///
- /// The track time in the last frame.
- ///
- private double lastTrackTime;
-
- ///
- /// Whether the user is currently dragging the timeline.
- ///
- private bool handlingDragInput;
-
- ///
- /// Whether the track was playing before a user drag event.
- ///
- private bool trackWasPlaying;
-
- private ITrack track;
-
protected override void Update()
{
base.Update();