瀏覽代碼

Throttle tickle reports to PS4/PS5 controllers

UpdateDevice() can be called at an arbitrary rate, so we need to
pace ourselves to avoid filling up the rumble queue with these.

(cherry picked from commit 6ec8b1a1735b5177f75f67e2cca595e763425319)
Cameron Gutman 1 年之前
父節點
當前提交
656b599828
共有 2 個文件被更改,包括 2 次插入0 次删除
  1. 1 0
      src/joystick/hidapi/SDL_hidapi_ps4.c
  2. 1 0
      src/joystick/hidapi/SDL_hidapi_ps5.c

+ 1 - 0
src/joystick/hidapi/SDL_hidapi_ps4.c

@@ -1208,6 +1208,7 @@ static SDL_bool HIDAPI_DriverPS4_UpdateDevice(SDL_HIDAPI_Device *device)
             if (SDL_TICKS_PASSED(now, ctx->last_packet + BLUETOOTH_DISCONNECT_TIMEOUT_MS)) {
                 /* Send an empty output report to tickle the Bluetooth stack */
                 HIDAPI_DriverPS4_TickleBluetooth(device);
+                ctx->last_packet = now;
             }
         } else {
             /* Reconnect the Bluetooth device once the USB device is gone */

+ 1 - 0
src/joystick/hidapi/SDL_hidapi_ps5.c

@@ -1500,6 +1500,7 @@ static SDL_bool HIDAPI_DriverPS5_UpdateDevice(SDL_HIDAPI_Device *device)
             if (SDL_TICKS_PASSED(now, ctx->last_packet + BLUETOOTH_DISCONNECT_TIMEOUT_MS)) {
                 /* Send an empty output report to tickle the Bluetooth stack */
                 HIDAPI_DriverPS5_TickleBluetooth(device);
+                ctx->last_packet = now;
             }
         } else {
             /* Reconnect the Bluetooth device once the USB device is gone */