Skip to content

fix: enumerate Pinscape devices once per process, not per Cabinet#49

Merged
jsm174 merged 1 commit intomasterfrom
fix-enumerate
Apr 20, 2026
Merged

fix: enumerate Pinscape devices once per process, not per Cabinet#49
jsm174 merged 1 commit intomasterfrom
fix-enumerate

Conversation

@jsm174
Copy link
Copy Markdown
Collaborator

@jsm174 jsm174 commented Apr 20, 2026

After researching vpinball/vpinball#3309, device enumeration was running inside the Cabinet constructor, so every game start re-walked the HID bus and re-opened the Pinscape while SDL was actively reading its joystick interface. The bus walk briefly stalled the joystick endpoint, which VPX's nudge filter interpreted as a large acceleration spike.

  • Pinscape/PinscapePico Initialize() now skips FindDevices() if devices are already populated
  • ClearDevices() moved out of OutputControllerList::Finish() (per-game) into IOConfigurator::Shutdown()
  • Matches the C# reference, where enumeration lives in a static constructor and runs once per process

@jsm174 jsm174 merged commit 7a61d55 into master Apr 20, 2026
14 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.

1 participant