Skip to content

Conversation

@ShadowApex
Copy link
Contributor

This change fixes a rare deadlock where a force feedback event can cause the target device to wait for a FFUpload response from the composite device while the composite device is waiting for a response from the target device about its capabilities. Requests for the capabilities of target devices will now happen asynchronously in its own task to allow the composite device to continue processing other requests.

This change also updates some of the target device handling logic to perform certain requests in parallel using a JoinSet instead of performing requests serially.

Now certain commands, like SetTargetDevices will perform much faster:

Serial

WARN  inputplumber::input::composite_device] Command SetTargetDevices took 220.566201ms

Parallel

DEBUG inputplumber::input::composite_device] Command SetTargetDevices took 7.258557ms

@ShadowApex ShadowApex requested a review from pastaq December 31, 2025 23:31
@ShadowApex ShadowApex merged commit 19e84e4 into main Jan 5, 2026
6 checks passed
@ShadowApex ShadowApex deleted the shadowapex/fix-target-deadlock branch January 5, 2026 17:21
@github-actions
Copy link

github-actions bot commented Jan 5, 2026

🎉 This PR is included in version 0.70.2 🎉

The release is available on:

Your semantic-release bot 📦🚀

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants