From 66ecdc69acb1399331f8988e3995763e7345ee8a Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Wed, 26 Feb 2025 10:40:03 -0800 Subject: [PATCH] Don't update the report mode until the related hint is set Fixes https://github.com/libsdl-org/SDL/issues/12404 --- src/joystick/hidapi/SDL_hidapi_switch.c | 21 +++++---------------- 1 file changed, 5 insertions(+), 16 deletions(-) diff --git a/src/joystick/hidapi/SDL_hidapi_switch.c b/src/joystick/hidapi/SDL_hidapi_switch.c index 6e09865df5..c1bc6d0abf 100644 --- a/src/joystick/hidapi/SDL_hidapi_switch.c +++ b/src/joystick/hidapi/SDL_hidapi_switch.c @@ -869,33 +869,22 @@ static void SetEnhancedModeAvailable(SDL_DriverSwitch_Context *ctx) } } -static void SetEnhancedMode(SDL_DriverSwitch_Context *ctx, bool bEnabled) -{ - if (bEnabled) { - SetEnhancedModeAvailable(ctx); - } - - if (bEnabled != ctx->m_bEnhancedMode) { - ctx->m_bEnhancedMode = bEnabled; - - UpdateInputMode(ctx); - } -} - static void SetEnhancedReportHint(SDL_DriverSwitch_Context *ctx, HIDAPI_Switch_EnhancedReportHint eEnhancedReportHint) { + ctx->m_eEnhancedReportHint = eEnhancedReportHint; + switch (eEnhancedReportHint) { case SWITCH_ENHANCED_REPORT_HINT_OFF: - SetEnhancedMode(ctx, false); + ctx->m_bEnhancedMode = false; break; case SWITCH_ENHANCED_REPORT_HINT_ON: - SetEnhancedMode(ctx, true); + SetEnhancedModeAvailable(ctx); + ctx->m_bEnhancedMode = true; break; case SWITCH_ENHANCED_REPORT_HINT_AUTO: SetEnhancedModeAvailable(ctx); break; } - ctx->m_eEnhancedReportHint = eEnhancedReportHint; UpdateInputMode(ctx); }