mirror of
https://github.com/mitch030504/Wiicompiled_VR_Frame.git
synced 2026-10-06 07:00:30 +02:00
Fix controller mapping platform, player index sync, and socket errors (#251)
* Fix macOS controller platform, sync player indices, and preserve socket send error - Preserve captured socket send error across diagnostic logging in network_socket.cpp - Use SDL_GetPlatform() instead of hardcoded Windows in controller mapping wizard - Synchronize Aurora and SDL player indices on port assignment and clear in pad.cpp - Auto-assign Player 1 on macOS when unconfigured in input.cpp * fix(input): refine macOS port 0 assignment and persistence logic - Persist port 0 preference for newly connected controller even if already assigned player index 0 - Verify controller has no preference on other ports before assigning to port 0 (cherry picked from commit 85f250155f8f397c1c463dc51dd4dc2707371d06) Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011tcyLz63pXjoYEwsFjfg8F
This commit is contained in:
1 parent
794b715d31
commit
152c4f5f38
4 files changed
+32
-6
No files matched your search
@@ -414,6 +414,29 @@ SDL_JoystickID add_controller(SDL_JoystickID which) noexcept {
|
||||
g_GameControllers[instance] = controller;
|
||||
ensure_player_index(g_GameControllers[instance]);
|
||||
apply_port_preferences();
|
||||
#if defined(SDL_PLATFORM_MACOS)
|
||||
// First-use convenience only: never override a saved assignment or None.
|
||||
if (g_portPreferences[0].state == PortPreferenceState::Unset) {
|
||||
bool hasOtherPortPreference = false;
|
||||
for (size_t port = 1; port < g_portPreferences.size(); ++port) {
|
||||
if (g_portPreferences[port].state == PortPreferenceState::Controller &&
|
||||
identity_match(g_portPreferences[port].identity, controller_identity(g_GameControllers[instance])) !=
|
||||
IdentityMatch::None) {
|
||||
hasOtherPortPreference = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!hasOtherPortPreference) {
|
||||
const auto* p0 = get_controller_for_player(0);
|
||||
if (p0 == nullptr) {
|
||||
assign_player_index(g_GameControllers[instance], 0);
|
||||
persist_controller_for_player(0, &g_GameControllers[instance]);
|
||||
} else if (p0 == &g_GameControllers[instance]) {
|
||||
persist_controller_for_player(0, &g_GameControllers[instance]);
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
return instance;
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user