Tags: ebitengine/oto
Tags
oto: run Suspend/Resume off the calling thread on darwin Suspend and Resume held c.cond.L to flip the toPause/toResume flags. On iOS the audio render goroutine can hold c.cond.L for several seconds while resume() retries transient AVAudioSession errors (e.g. AVAudioSessionErrorCodeCannotStartPlaying), which meant the platform UI thread could block in applicationWillResignActive / applicationDidBecome Active for the duration of those retries. Spawn a small goroutine to perform the cond.L acquisition and flag flip so the caller returns immediately. The underlying audio loop, retry policy, and error semantics are unchanged; errors from the asynchronous transition still surface via Err on the next poll. Updates #93
oto: recover from kAudioQueueErr_QueueInvalidated on iOS When mediaserverd resets (e.g. AVAudioSession media services were reset), the AudioQueue is invalidated and AudioQueueStart / AudioQueueEnqueueBuffer / AudioQueuePause start returning kAudioQueueErr_QueueInvalidated (-66671). Plain retry on the same handle never recovers because the queue object itself is dead. Recover by disposing the dead queue and rebuilding a fresh one with new buffers. The render callback now also filters by inAQ to drop any late callbacks delivered for a just-disposed queue. Updates #278
oto: set default PulseAudio latency to 100ms Without an explicit latency, PulseAudio uses its own large default buffer (~2s), which causes a noticeable delay before audio starts playing. Updates hajimehoshi/ebiten#3434 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
oto: add non-cgo linux pulseaudio driver (#277) Add pulseaudio support on linux via github.com/jfreymuth/pulse that does not require CGO to build. Makes it the default linux audio option, falling back to the ALSA implementation if CGO is enabled. Written entirely with Copilot, plus some manual human testing via the example app. Closes #154
.github/workflows: skip tests for Windows Updates #259
PreviousNext