Skip to content

chore(deps): bump wasapi from 0.17 to 0.23#56

Merged
InstaZDLL merged 1 commit into
mainfrom
chore/wasapi-0.23-migration
May 18, 2026
Merged

chore(deps): bump wasapi from 0.17 to 0.23#56
InstaZDLL merged 1 commit into
mainfrom
chore/wasapi-0.23-migration

Conversation

@InstaZDLL
Copy link
Copy Markdown
Owner

@InstaZDLL InstaZDLL commented May 18, 2026

Summary

Same shape as the symphonia 0.6 PR (#53): the dependabot bump alone can't compile against the new release because the device-lookup API was reshaped.

wasapi 0.23 removed the free get_default_device function and the DeviceCollection::new constructor. Device lookup now flows through a DeviceEnumerator that owns the IMMDeviceEnumerator COM pointer.

Closes #48 (dependabot — bare version bump, no migration).

Migration

Only src-tauri/src/audio/wasapi_exclusive.rs::pick_device needed changes:

  • Build a DeviceEnumerator once
  • Default device: enumerator.get_default_device(&Direction::Render)
  • Friendly-name lookup: enumerator.get_device_collection(&Direction::Render)?.get_device_with_name(name)enumerator.get_device(name) looks tempting but it takes an opaque device-id, not the human-readable name we persist in app_setting['audio.output_device']. Going through the collection keeps the existing behaviour.

Everything else (AudioClient init, is_supported, write_to_device, the event loop) is API-stable across this bump.

Test plan

  • cargo check --all-targets
  • cargo clippy --all-targets --no-deps — clean
  • cargo test — 97 passed / 0 failed
  • Manual WASAPI Exclusive playback test on Windows (requires opt-in toggle in Settings)

The free `get_default_device` function and `DeviceCollection::new`
constructor were removed in wasapi 0.23. Device lookup now flows
through a `DeviceEnumerator` that owns the `IMMDeviceEnumerator` COM
pointer.

Migration in `pick_device`:
- Build a `DeviceEnumerator` once
- For the default device path, call `enumerator.get_default_device`
- For the friendly-name path, derive a `DeviceCollection` via
  `enumerator.get_device_collection(&Direction::Render)` and keep the
  existing `collection.get_device_with_name(name)` call. Going through
  `enumerator.get_device(name)` would silently fail because that
  variant takes an opaque device-id, not the human-readable name we
  persist in app_setting['audio.output_device'].

Everything else (AudioClient init, is_supported, write_to_device,
event loop) is API-stable across this bump. Closes dependabot #48.
@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented May 18, 2026

Warning

Rate limit exceeded

@InstaZDLL has exceeded the limit for the number of commits that can be reviewed per hour. Please wait 39 minutes and 9 seconds before requesting another review.

To continue reviewing without waiting, purchase usage credits in the billing tab.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro

Run ID: 429cfbfd-1b93-4385-8130-4357e6699aa7

📥 Commits

Reviewing files that changed from the base of the PR and between d0c7aa9 and 95fb4b8.

⛔ Files ignored due to path filters (1)
  • src-tauri/Cargo.lock is excluded by !**/*.lock, !src-tauri/Cargo.lock
📒 Files selected for processing (2)
  • src-tauri/Cargo.toml
  • src-tauri/src/audio/wasapi_exclusive.rs
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch chore/wasapi-0.23-migration

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@github-actions github-actions Bot added scope: backend Rust/Tauri backend (src-tauri/) scope: deps Dependencies type: chore Maintenance size: m 50-200 lines labels May 18, 2026
@InstaZDLL InstaZDLL self-assigned this May 18, 2026
@InstaZDLL InstaZDLL enabled auto-merge (squash) May 18, 2026 17:28
@InstaZDLL InstaZDLL disabled auto-merge May 18, 2026 17:35
@InstaZDLL InstaZDLL merged commit 5176f4e into main May 18, 2026
13 checks passed
@InstaZDLL InstaZDLL deleted the chore/wasapi-0.23-migration branch May 18, 2026 17:35
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

scope: backend Rust/Tauri backend (src-tauri/) scope: deps Dependencies size: m 50-200 lines type: chore Maintenance

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant