mirror of
https://github.com/games-on-whales/wolf.git
synced 2026-10-15 13:02:03 +00:00
[PR #436] [CLOSED] fix(lobbies): stop gamepad input leaking into Wolf-UI across lobby switches #466
Labels
No labels
🧠 1 - 🤖 999
AMD
bug
bug
cannot reproduce
documentation
duplicate
easy
enhancement
enhancement
enhancement
fixed?
fixed?
good first issue
hard
help wanted
Intel
invalid
LXC
medium
moonlight-protocol
Multi GPU
nixos
not a bug
nvidia
pull-request
question
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
games-on-whales/wolf#466
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
📋 Pull Request Information
Original PR: https://github.com/games-on-whales/wolf/pull/436
Author: @JBailes
Created: 6/16/2026
Status: ❌ Closed
Base:
stable← Head:fix/joypad-input-leak📝 Commits (1)
920fea3fix(lobbies): stop gamepad input leaking into Wolf-UI across lobby switches📊 Changes
1 file changed (+66 additions, -32 deletions)
View changed files
📝
src/moonlight-server/sessions/lobbies.cpp(+66 -32)📄 Description
Fixes #435.
Problem
When a session joins or leaves a lobby we hand its joypad to the new container by mknod-ing the device node and faking udev events, and rm the node from the old one on unplug. A process that already opened the node (the Wolf-UI Godot process) keeps its fd valid after the rm, so it carries on getting input. Gamepad input then drives both the running app and the Wolf-UI underneath it, which randomly launches and closes apps.
This isn't Unraid specific, the mechanism is the same on plain Docker.
Change
Route every join/leave joypad hand-off through
migrate_joypad(): unplug from the source, callinputtino::Joypad::recreate_device()to destroy and rebuild the underlying device (UI_DEV_DESTROY/UHID_DESTROY invalidates the stale fd in the old container), then plug the fresh device into the target. The joypad object and its callbacks survive, so Moonlight input and rumble keep working.Needs games-on-whales/inputtino#39. Covers Xbox, Switch and PS/DualSense.
Testing
Built against the inputtino branch via
-DWOLF_CUSTOM_INPUTTINO_SRC. Please hammer pause/resume, that's the path most likely to regress.🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.