From 7df8324957155500f48e57496acb9316375483d4 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Tue, 22 Nov 2016 14:53:23 +0900 Subject: [PATCH] Explicit disposal via using() to WorkingBeatmap. --- osu.Game/Beatmaps/IO/ArchiveReader.cs | 2 +- osu.Game/Beatmaps/WorkingBeatmap.cs | 23 +++++++++++------------ 2 files changed, 12 insertions(+), 13 deletions(-) diff --git a/osu.Game/Beatmaps/IO/ArchiveReader.cs b/osu.Game/Beatmaps/IO/ArchiveReader.cs index bde6bb8b35..a052b9eb0d 100644 --- a/osu.Game/Beatmaps/IO/ArchiveReader.cs +++ b/osu.Game/Beatmaps/IO/ArchiveReader.cs @@ -14,7 +14,7 @@ namespace osu.Game.Beatmaps.IO public Func Test { get; set; } public Type Type { get; set; } } - + private static List readers { get; } = new List(); public static ArchiveReader GetReader(BasicStorage storage, string path) diff --git a/osu.Game/Beatmaps/WorkingBeatmap.cs b/osu.Game/Beatmaps/WorkingBeatmap.cs index d06ad50b8a..153539d5f4 100644 --- a/osu.Game/Beatmaps/WorkingBeatmap.cs +++ b/osu.Game/Beatmaps/WorkingBeatmap.cs @@ -18,7 +18,7 @@ namespace osu.Game.Beatmaps public readonly BeatmapSetInfo BeatmapSetInfo; private readonly BeatmapDatabase database; - private ArchiveReader reader => database?.GetReader(BeatmapSetInfo); + private ArchiveReader GetReader() => database?.GetReader(BeatmapSetInfo); private Texture background; private object backgroundLock = new object(); @@ -32,7 +32,8 @@ namespace osu.Game.Beatmaps try { - background = new TextureStore(new RawTextureLoaderStore(reader)).Get(BeatmapInfo.Metadata.BackgroundFile); + using (var reader = GetReader()) + background = new TextureStore(new RawTextureLoaderStore(reader)).Get(BeatmapInfo.Metadata.BackgroundFile); } catch { } @@ -54,6 +55,7 @@ namespace osu.Game.Beatmaps try { + using (var reader = GetReader()) using (var stream = new StreamReader(reader.GetStream(BeatmapInfo.Path))) beatmap = BeatmapDecoder.GetDecoder(stream)?.Decode(stream); } @@ -77,9 +79,12 @@ namespace osu.Game.Beatmaps try { - var trackData = reader?.GetStream(BeatmapInfo.Metadata.AudioFile); - if (trackData != null) - track = new AudioTrackBass(trackData); + using (var reader = GetReader()) + { + var trackData = reader?.GetStream(BeatmapInfo.Metadata.AudioFile); + if (trackData != null) + track = new AudioTrackBass(trackData); + } } catch { } @@ -89,12 +94,6 @@ namespace osu.Game.Beatmaps set { lock (trackLock) track = value; } } - - ~WorkingBeatmap() - { - Dispose(false); - } - public WorkingBeatmap(Beatmap beatmap) { this.beatmap = beatmap; @@ -114,7 +113,7 @@ namespace osu.Game.Beatmaps if (!isDisposed) { track?.Dispose(); - reader?.Dispose(); + background?.Dispose(); isDisposed = true; } }