Release queued OpenAL buffers on stream shutdown
This commit is contained in:
committed by
Brandon McGinty
parent
4914182812
commit
27e8fc7232
@@ -487,8 +487,16 @@ func (s *Stream) OnAudioStream(e *gumble.AudioStreamEvent) {
|
|||||||
}
|
}
|
||||||
reclaim()
|
reclaim()
|
||||||
s.render(func() {
|
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()
|
source.Delete()
|
||||||
|
emptyBufs.Delete()
|
||||||
e.User.SetAudioSource(nil)
|
e.User.SetAudioSource(nil)
|
||||||
})
|
})
|
||||||
log.Debug("audio stream ended for user %s", e.User.Name)
|
log.Debug("audio stream ended for user %s", e.User.Name)
|
||||||
|
|||||||
Reference in New Issue
Block a user