together: scope seat-streamers into the launch slice #5
No reviewers
Labels
No labels
bug
documentation
duplicate
enhancement
good first issue
help wanted
invalid
question
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
splitux-gg/splitux!5
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "fix/together-seat-streamer-lifecycle"
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?
Problem
Seat-streamers were spawned as bare children, inheriting
splitux-main-*.scopeinstead of the per-launchsplitux-<id>.slice. On a hard kill/crash of splitux — or a manualsystemctl --user stop splitux.slice— they orphaned and kept their virtual input devices alive. The next launch's gamescope then grabbed the stale event nodes via--libinput-hold-dev, so input never reached the game (the "input not passed to the game" failure seen during local-split testing).Fix
Spawn each seat-streamer inside the launch slice via a new
scope::wrap_seat_command(a-seat{idx}scope, sibling to instance-i{idx}scopes). It now:BindsTothe main scope → dies with splitux on any signal (hard kill, crash, normal exit),Also hoisted the scope/launch-id setup above seat-streamer spawn so
launch_id/main_scopeare available, and refactoredwrap_commandto share awrap_in_scopecore (stdio intentionally not copied — applied after wrapping inspawn_seat_streamer).Verified
splitux.slice/<id>.slice/<id>-seatN.scope.systemctl --user stop splitux.slicenow reaps seat-streamers + gamescope + game + virtual devices + overlays → all 0 (previously left orphan seat-streamers + devices).