From fc7f57f89e92e27d91b2560ddf8478cc452dd5e9 Mon Sep 17 00:00:00 2001 From: hwsmm Date: Mon, 16 Oct 2023 21:29:26 +0900 Subject: [PATCH] Stop decoding a track properly if disposed --- osu.Framework/Audio/Track/TrackSDL2.cs | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/osu.Framework/Audio/Track/TrackSDL2.cs b/osu.Framework/Audio/Track/TrackSDL2.cs index 9fb9a6a665..69a85df7ac 100644 --- a/osu.Framework/Audio/Track/TrackSDL2.cs +++ b/osu.Framework/Audio/Track/TrackSDL2.cs @@ -60,11 +60,15 @@ internal void AddToQueue(byte[] audio, object? userdata, AudioDecoder.AudioDecod player.PutSamplesInStream(audio); if (done) + { player.DonePutting(); + decodeData = null; + } } } - Interlocked.Exchange(ref decodeData, data); + if (!isLoaded) + Interlocked.Exchange(ref decodeData, data); } protected override void UpdateState() @@ -207,6 +211,8 @@ protected override void Dispose(bool disposing) isRunning = false; (Mixer as SDL2AudioMixer)?.StreamFree(this); + decodeData?.Stop(); + lock (syncRoot) player.Dispose();