xinput_haptic_gamepad_win.h 1.1 KB

123456789101112131415161718192021222324252627282930313233343536
  1. // Copyright 2018 The Chromium Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style license that can be
  3. // found in the LICENSE file.
  4. #ifndef DEVICE_GAMEPAD_XINPUT_HAPTIC_GAMEPAD_WIN_H_
  5. #define DEVICE_GAMEPAD_XINPUT_HAPTIC_GAMEPAD_WIN_H_
  6. #include <Unknwn.h>
  7. #include <XInput.h>
  8. #include "base/memory/weak_ptr.h"
  9. #include "device/gamepad/abstract_haptic_gamepad.h"
  10. namespace device {
  11. class XInputHapticGamepadWin final : public AbstractHapticGamepad {
  12. public:
  13. typedef DWORD(WINAPI* XInputSetStateFunc)(DWORD dwUserIndex,
  14. XINPUT_VIBRATION* pVibration);
  15. XInputHapticGamepadWin(int pad_id, XInputSetStateFunc xinput_set_state);
  16. ~XInputHapticGamepadWin() override;
  17. // AbstractHapticGamepad implementation.
  18. void SetVibration(mojom::GamepadEffectParametersPtr params) override;
  19. base::WeakPtr<AbstractHapticGamepad> GetWeakPtr() override;
  20. private:
  21. int pad_id_;
  22. XInputSetStateFunc xinput_set_state_;
  23. base::WeakPtrFactory<XInputHapticGamepadWin> weak_factory_{this};
  24. };
  25. } // namespace device
  26. #endif // DEVICE_GAMEPAD_XINPUT_HAPTIC_GAMEPAD_WIN_H_