From 19b38983dffa148f09441a20185dd0f8b6f70521 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Mon, 9 Oct 2017 17:18:11 +0900 Subject: [PATCH] Update in-line with framework --- osu-framework | 2 +- osu.Game/Beatmaps/BeatmapManager.cs | 10 ++++++++++ osu.Game/Beatmaps/WorkingBeatmap.cs | 14 ++++++++++++++ .../Edit/Screens/Compose/BeatmapWaveformGraph.cs | 2 +- 4 files changed, 26 insertions(+), 2 deletions(-) diff --git a/osu-framework b/osu-framework index 4019939ba9..38cf96c899 160000 --- a/osu-framework +++ b/osu-framework @@ -1 +1 @@ -Subproject commit 4019939ba9f0a407880e00422280ba573ffddb24 +Subproject commit 38cf96c8994ad41ae6aa86de6bfe09fd5fa9e1b6 diff --git a/osu.Game/Beatmaps/BeatmapManager.cs b/osu.Game/Beatmaps/BeatmapManager.cs index a1b678392b..5fcdab11f8 100644 --- a/osu.Game/Beatmaps/BeatmapManager.cs +++ b/osu.Game/Beatmaps/BeatmapManager.cs @@ -573,6 +573,16 @@ namespace osu.Game.Beatmaps } catch { return new TrackVirtual(); } } + + protected override Waveform GetWaveform() + { + try + { + var trackData = store.GetStream(getPathForFile(Metadata.AudioFile)); + return trackData == null ? new Waveform() : new Waveform(trackData); + } + catch { return new Waveform(); } + } } /// diff --git a/osu.Game/Beatmaps/WorkingBeatmap.cs b/osu.Game/Beatmaps/WorkingBeatmap.cs index 277846ee80..959e71d48d 100644 --- a/osu.Game/Beatmaps/WorkingBeatmap.cs +++ b/osu.Game/Beatmaps/WorkingBeatmap.cs @@ -43,6 +43,7 @@ namespace osu.Game.Beatmaps protected abstract Beatmap GetBeatmap(); protected abstract Texture GetBackground(); protected abstract Track GetTrack(); + protected virtual Waveform GetWaveform() => new Waveform(); private Beatmap beatmap; private readonly object beatmapLock = new object(); @@ -96,6 +97,17 @@ namespace osu.Game.Beatmaps } } + private Waveform waveform; + private readonly object waveformLock = new object(); + public Waveform Waveform + { + get + { + lock (waveformLock) + return waveform ?? (waveform = GetWaveform()); + } + } + public bool TrackLoaded => track != null; public void TransferTo(WorkingBeatmap other) @@ -114,6 +126,8 @@ namespace osu.Game.Beatmaps { background?.Dispose(); background = null; + + waveform?.Dispose(); } public void DisposeTrack() diff --git a/osu.Game/Screens/Edit/Screens/Compose/BeatmapWaveformGraph.cs b/osu.Game/Screens/Edit/Screens/Compose/BeatmapWaveformGraph.cs index ceabda5b16..f204c8c525 100644 --- a/osu.Game/Screens/Edit/Screens/Compose/BeatmapWaveformGraph.cs +++ b/osu.Game/Screens/Edit/Screens/Compose/BeatmapWaveformGraph.cs @@ -18,7 +18,7 @@ namespace osu.Game.Screens.Edit.Screens.Compose public BeatmapWaveformGraph() { InternalChild = graph = new WaveformGraph { RelativeSizeAxes = Axes.Both }; - Beatmap.ValueChanged += b => graph.Track = b.Track; + Beatmap.ValueChanged += b => graph.Waveform = b.Waveform; } ///