From 64d0ef6f0f82051646668b384421f41ca2c75cc5 Mon Sep 17 00:00:00 2001 From: "Brandon McGinty (chatgpt)" Date: Sun, 9 Aug 2026 12:58:15 -0400 Subject: [PATCH] Avoid treating capture timing as microphone failure --- gumble/gumbleopenal/stream.go | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/gumble/gumbleopenal/stream.go b/gumble/gumbleopenal/stream.go index 8562418..88eb976 100644 --- a/gumble/gumbleopenal/stream.go +++ b/gumble/gumbleopenal/stream.go @@ -674,8 +674,9 @@ func (s *Stream) sourceRoutine(inputDevice *string) { // available. PipeWire and PulseAudio do not guarantee that a Go // ticker fires precisely on a capture-frame boundary. hasMicInput := false + available := s.deviceSource.CapturedSamples() var buff []byte - if s.deviceSource.CapturedSamples() >= uint32(frameSize) { + if available >= uint32(frameSize) { buff = s.deviceSource.CaptureSamples(uint32(frameSize)) } if len(buff) == sampleCount*2 { @@ -700,7 +701,7 @@ func (s *Stream) sourceRoutine(inputDevice *string) { } else { s.processStereoSamples(int16Buffer, frameSize) } - } else if !micFailed { + } else if available >= uint32(frameSize) && !micFailed { micFailed = true if s.errorFunc != nil { s.errorFunc(ErrMic)