From 27e8fc72327ad9b633ed166e8a9550adb02dfff5 Mon Sep 17 00:00:00 2001 From: "Brandon McGinty (chatgpt)" Date: Sun, 9 Aug 2026 12:57:37 -0400 Subject: [PATCH] Release queued OpenAL buffers on stream shutdown --- gumble/gumbleopenal/stream.go | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/gumble/gumbleopenal/stream.go b/gumble/gumbleopenal/stream.go index 24cfbcd..1d8c196 100644 --- a/gumble/gumbleopenal/stream.go +++ b/gumble/gumbleopenal/stream.go @@ -487,8 +487,16 @@ func (s *Stream) OnAudioStream(e *gumble.AudioStreamEvent) { } reclaim() s.render(func() { - emptyBufs.Delete() + // OpenAL does not delete buffers when a source is deleted. Reclaim + // queued buffers after stopping so every generated buffer is freed. + source.Stop() + if n := source.BuffersQueued(); n > 0 { + queuedBufs := make(openal.Buffers, n) + source.UnqueueBuffers(queuedBufs) + emptyBufs = append(emptyBufs, queuedBufs...) + } source.Delete() + emptyBufs.Delete() e.User.SetAudioSource(nil) }) log.Debug("audio stream ended for user %s", e.User.Name)