mirror of
https://github.com/games-on-whales/wolf.git
synced 2026-10-15 13:02:03 +00:00
[PR #452] [MERGED] fix(lobby): deliver device unplug events to the lobby container #477
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#477
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/452
Author: @kmreisi
Created: 7/2/2026
Status: ✅ Merged
Merged: 7/2/2026
Merged by: @ABeltramo
Base:
stable← Head:fix/lobby-hotplug-reconnect📝 Commits (1)
a9d7c60fix(lobby): deliver device unplug events to the lobby container📊 Changes
2 files changed (+44 additions, -2 deletions)
View changed files
📝
src/moonlight-server/sessions/lobbies.cpp(+2 -2)📝
tests/testWolfAPI.cpp(+42 -0)📄 Description
Problem
Hot-plugging a controller (disconnect then reconnect) while a Moonlight session is inside a lobby app (e.g. Steam) doesn't reach the app — the reconnected pad never shows up. A plain Wolf-UI session is fine; it only breaks once the session has joined a lobby.
Cause
The lobby's
UnplugDeviceEventhandler re-fires the event to the lobby's runner as a bareevents::UnplugDeviceEvent:Every handler registers for
immer::box<events::UnplugDeviceEvent>, anddp::event_buskeys handlers bytypeid(EventType). So the unboxed event matches no handler and is silently dropped — the lobby container never receives the remove.The stale device node then makes the next replug fail at
mknod ... File exists, and since the plug command ismknod ... && fake-udev, the&&-chained ADD uevent never fires, so the app never sees the reconnect.The sibling paths (plug relay, join, leave) all box the event; this one didn't — it has been this way since lobbies were introduced.
Fix
Box the relayed event, matching the other paths. Includes a regression test that drives the relay through
setup_lobbies_handlers(no compositor required).🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.