From d77eb8a8d5c201e53de7019d26d81500fa9897a0 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Wed, 8 Feb 2023 14:22:39 -0800 Subject: [PATCH] Make sure we synchronously re-enable USB reporting mode for Switch controllers (thanks @SortaCore!) Fixes https://github.com/libsdl-org/SDL/issues/3450 (cherry picked from commit b7c6fec10a152e47f8fa18350134188b75e9df0b) --- src/joystick/hidapi/SDL_hidapi_switch.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/joystick/hidapi/SDL_hidapi_switch.c b/src/joystick/hidapi/SDL_hidapi_switch.c index 168a2df80..bfc697692 100644 --- a/src/joystick/hidapi/SDL_hidapi_switch.c +++ b/src/joystick/hidapi/SDL_hidapi_switch.c @@ -2163,7 +2163,11 @@ static SDL_bool HIDAPI_DriverSwitch_UpdateDevice(SDL_HIDAPI_Device *device) const Uint32 INPUT_WAIT_TIMEOUT_MS = 100; if (SDL_TICKS_PASSED(now, ctx->m_unLastInput + INPUT_WAIT_TIMEOUT_MS)) { /* Steam may have put the controller back into non-reporting mode */ + SDL_bool wasSyncWrite = ctx->m_bSyncWrite; + + ctx->m_bSyncWrite = SDL_TRUE; WriteProprietary(ctx, k_eSwitchProprietaryCommandIDs_ForceUSB, NULL, 0, SDL_FALSE); + ctx->m_bSyncWrite = wasSyncWrite; } } else if (device->is_bluetooth) { const Uint32 INPUT_WAIT_TIMEOUT_MS = 3000;