Skip to content

wasapi: keep device polling reachable without sample events - #323

Merged
hajimehoshi merged 1 commit into
ebitengine:mainfrom
kumagi:codex/oto-priority-313-20261014
Oct 15, 2026
Merged

hajimehoshi merged 1 commit into
ebitengine:mainfrom
kumagi:codex/oto-priority-313-20261014

Conversation

@kumagi

@kumagi kumagi commented Oct 14, 2026

Copy link
Copy Markdown
Contributor

What issue is this addressing?

None

What type of issue is this addressing?

bug

What this PR does | solves

Use a 500 ms wait timeout to keep the existing device poll and suspension predicate reachable when sample-ready events stop. Timeout skips writing; only a signaled event triggers an audio write. Wait errors and unexpected results still propagate. A timeout does not declare device failure or restart an unchanged endpoint. This does not guarantee recovery of every silent same-ID endpoint stall or bound native/COM operation duration.

Validation: An actual render-loop private race harness fails on the original unbounded wait/timeout handling and passes after the fix. It covers repeated timeouts without writes, signal/write, device switch, suspension/resume, wait errors and unexpected results. Wait, clock and COM operations are substituted.

Native macOS arm64 internal race tests and build passed. Windows 386/amd64/arm64 builds passed (compile only). Internal vet and other analyzers passed; full vet retains unchanged baseline Darwin unsafe.Pointer and Windows unkeyed GUID diagnostics. Native Windows playback, reconnect and recovery were not run. Independent review found no blocking issue.

@hajimehoshi hajimehoshi left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@hajimehoshi
hajimehoshi merged commit cfd00a3 into ebitengine:main Oct 15, 2026
9 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants