[3.x] Linux: Don't use udev for joypad hotloading when running in a sandbox #76962
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
udev doesn't work in sandboxes, notably the new Steam container runtime as found notably on the Steam Deck, and in Flatpak/Snap packages.
Like SDL does, when we detect such a containerized environment, we fall back to parsing
/dev/input
directly.See smcv's comments in #76879 for details.
Fixes #76879.
3.x
backport of #76961.CC @tcoxon
I tested this one with Cassette Beasts on Steam Deck and it does seem to solve the issue.
Scenarios tested successfully:
It's not fully perfect as there's still the question of which of the two controllers (Xbox controller and Steam Deck builtin controller) the game decides to focus on when using both. Starting with the Xbox controller, disconnecting it, then using the Steam Deck controller will change which device the game expects to use, and then reconnecting the Xbox controller won't make it take precedence again, until changed manually in the Steam controller config. But this might be a game specific issue or a general Steam Deck quirk that may not be an engine bug.