diff --git a/osu.Game/Overlays/MusicController.cs b/osu.Game/Overlays/MusicController.cs index aec5e03b8f..c9bbb97032 100644 --- a/osu.Game/Overlays/MusicController.cs +++ b/osu.Game/Overlays/MusicController.cs @@ -293,17 +293,22 @@ namespace osu.Game.Overlays current = beatmapBacking.Value; - updateProgressBar(current?.Track); + updateProgressBarLimit(current?.Track); updateDisplay(beatmapBacking, direction); queuedDirection = null; } - private void updateProgressBar(Track t) + private void updateProgressBarLimit(Track t) { - if (t?.IsLoaded ?? false) - progressBar.EndTime = t.Length; - else if (t != null) + if (t != null) + { t.OnLoaded += loadedTrack => progressBar.EndTime = loadedTrack.Length; + if (t.IsLoaded) + { + progressBar.EndTime = t.Length; + t.OnLoaded = null; + } + } } private ScheduledDelegate pendingBeatmapSwitch; diff --git a/osu.Game/Screens/Play/SongProgress.cs b/osu.Game/Screens/Play/SongProgress.cs index 5fc83eddb4..ea91089aa4 100644 --- a/osu.Game/Screens/Play/SongProgress.cs +++ b/osu.Game/Screens/Play/SongProgress.cs @@ -12,7 +12,6 @@ using System.Linq; using osu.Framework.Timing; using osu.Game.Rulesets.Objects; using osu.Game.Rulesets.Objects.Types; - namespace osu.Game.Screens.Play { public class SongProgress : OverlayContainer @@ -92,7 +91,7 @@ namespace osu.Game.Screens.Play Alpha = 0, Anchor = Anchor.BottomLeft, Origin = Anchor.BottomLeft, - OnSeek = position => this.OnSeek?.Invoke(position), + OnSeek = position => OnSeek?.Invoke(position), }, }; }