From 19693c3e51c6146fb013cbe4a6a895a03b1b2c18 Mon Sep 17 00:00:00 2001 From: Shane Woolcock Date: Tue, 8 Jan 2019 17:04:43 +1030 Subject: [PATCH] Use TrackManager CreateWaveform to fix editor crashes --- osu.Game.Tests/Visual/TestCaseEditorComposeTimeline.cs | 5 +++-- osu.Game.Tests/Visual/TestCaseWaveform.cs | 5 +++-- osu.Game.Tests/WaveformTestBeatmap.cs | 8 +++++--- osu.Game/Beatmaps/BeatmapManager_WorkingBeatmap.cs | 4 ++-- 4 files changed, 13 insertions(+), 9 deletions(-) diff --git a/osu.Game.Tests/Visual/TestCaseEditorComposeTimeline.cs b/osu.Game.Tests/Visual/TestCaseEditorComposeTimeline.cs index f548dfe666..8533ed666a 100644 --- a/osu.Game.Tests/Visual/TestCaseEditorComposeTimeline.cs +++ b/osu.Game.Tests/Visual/TestCaseEditorComposeTimeline.cs @@ -15,6 +15,7 @@ using osu.Framework.Timing; using osu.Game.Beatmaps; using osu.Game.Screens.Edit.Compose.Components.Timeline; using osuTK.Graphics; +using osu.Framework.Audio; namespace osu.Game.Tests.Visual { @@ -30,9 +31,9 @@ namespace osu.Game.Tests.Visual }; [BackgroundDependencyLoader] - private void load() + private void load(AudioManager audioManager) { - Beatmap.Value = new WaveformTestBeatmap(); + Beatmap.Value = new WaveformTestBeatmap(audioManager.Track); Children = new Drawable[] { diff --git a/osu.Game.Tests/Visual/TestCaseWaveform.cs b/osu.Game.Tests/Visual/TestCaseWaveform.cs index f97091e58d..8de7c2fda9 100644 --- a/osu.Game.Tests/Visual/TestCaseWaveform.cs +++ b/osu.Game.Tests/Visual/TestCaseWaveform.cs @@ -10,6 +10,7 @@ using osu.Framework.Graphics.Audio; using osu.Framework.Graphics.Containers; using osu.Framework.Graphics.Shapes; using osu.Game.Graphics.Sprites; +using osu.Framework.Audio; namespace osu.Game.Tests.Visual { @@ -17,9 +18,9 @@ namespace osu.Game.Tests.Visual public class TestCaseWaveform : OsuTestCase { [BackgroundDependencyLoader] - private void load() + private void load(AudioManager audioManager) { - Beatmap.Value = new WaveformTestBeatmap(); + Beatmap.Value = new WaveformTestBeatmap(audioManager.Track); FillFlowContainer flow; Child = flow = new FillFlowContainer diff --git a/osu.Game.Tests/WaveformTestBeatmap.cs b/osu.Game.Tests/WaveformTestBeatmap.cs index 17aa7db14d..1c1d1938bc 100644 --- a/osu.Game.Tests/WaveformTestBeatmap.cs +++ b/osu.Game.Tests/WaveformTestBeatmap.cs @@ -19,10 +19,12 @@ namespace osu.Game.Tests { private readonly ZipArchiveReader reader; private readonly FileStream stream; + private readonly TrackManager trackManager; - public WaveformTestBeatmap() + public WaveformTestBeatmap(TrackManager trackManager) : base(new BeatmapInfo()) { + this.trackManager = trackManager; stream = File.OpenRead(ImportBeatmapTest.TEST_OSZ_PATH); reader = new ZipArchiveReader(stream); } @@ -38,9 +40,9 @@ namespace osu.Game.Tests protected override Texture GetBackground() => null; - protected override Waveform GetWaveform() => new Waveform(getAudioStream()); + protected override Waveform GetWaveform() => trackManager.CreateWaveform(getAudioStream()); - protected override Track GetTrack() => new TrackBass(getAudioStream()); + protected override Track GetTrack() => trackManager.CreateTrack(getAudioStream()); private Stream getAudioStream() => reader.GetStream(reader.Filenames.First(f => f.EndsWith(".mp3"))); private Stream getBeatmapStream() => reader.GetStream(reader.Filenames.First(f => f.EndsWith(".osu"))); diff --git a/osu.Game/Beatmaps/BeatmapManager_WorkingBeatmap.cs b/osu.Game/Beatmaps/BeatmapManager_WorkingBeatmap.cs index 46bc546c4f..74e9825dc3 100644 --- a/osu.Game/Beatmaps/BeatmapManager_WorkingBeatmap.cs +++ b/osu.Game/Beatmaps/BeatmapManager_WorkingBeatmap.cs @@ -70,7 +70,7 @@ namespace osu.Game.Beatmaps try { var trackData = store.GetStream(getPathForFile(Metadata.AudioFile)); - return trackData == null ? null : trackManager.CreateTrack(trackData, false); + return trackData == null ? null : trackManager.CreateTrack(trackData); } catch { @@ -91,7 +91,7 @@ namespace osu.Game.Beatmaps try { var trackData = store.GetStream(getPathForFile(Metadata.AudioFile)); - return trackData == null ? null : new Waveform(trackData); + return trackData == null ? null : trackManager.CreateWaveform(trackData); } catch {