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();