Release queued OpenAL buffers on stream shutdown

This commit is contained in:
Brandon McGinty (chatgpt)
2026-08-09 12:57:37 -04:00
committed by Brandon McGinty
parent 4914182812
commit 27e8fc7232
+9 -1
View File
@@ -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)