diff --git a/src/platform/qt/InputController.cpp b/src/platform/qt/InputController.cpp index 5e8634497..212c55c09 100644 --- a/src/platform/qt/InputController.cpp +++ b/src/platform/qt/InputController.cpp @@ -345,7 +345,7 @@ void InputController::update() { int InputController::pollEvents() { int activeButtons = 0; for (auto& pad : gamepads()) { - InputMapper im(mapper(pad)); + InputMapper im(mapper(pad.get())); activeButtons |= im.mapKeys(pad->currentButtons()); activeButtons |= im.mapAxes(pad->currentAxes()); activeButtons |= im.mapHats(pad->currentHats()); @@ -358,7 +358,7 @@ int InputController::pollEvents() { return activeButtons; } -Gamepad* InputController::gamepad(uint32_t type) { +std::shared_ptr InputController::gamepad(uint32_t type) { auto driver = m_inputDrivers.value(type); if (!driver) { return nullptr; @@ -370,13 +370,13 @@ Gamepad* InputController::gamepad(uint32_t type) { return driver->activeGamepad(); } -QList InputController::gamepads() { - QList pads; +QList> InputController::gamepads() { + QList> pads; for (auto& driver : m_inputDrivers) { if (!driver->supportsGamepads()) { continue; } - Gamepad* pad = driver->activeGamepad(); + std::shared_ptr pad = driver->activeGamepad(); if (pad) { pads.append(pad); } @@ -386,7 +386,7 @@ QList InputController::gamepads() { QSet InputController::activeGamepadButtons(uint32_t type) { QSet activeButtons; - Gamepad* pad = gamepad(type); + std::shared_ptr pad = gamepad(type); if (!pad) { return {}; } @@ -401,7 +401,7 @@ QSet InputController::activeGamepadButtons(uint32_t type) { QSet> InputController::activeGamepadAxes(uint32_t type) { QSet> activeAxes; - Gamepad* pad = gamepad(type); + std::shared_ptr pad = gamepad(type); if (!pad) { return {}; } @@ -422,7 +422,7 @@ QSet> InputController::activeGamepadAxes QSet> InputController::activeGamepadHats(uint32_t type) { QSet> activeHats; - Gamepad* pad = gamepad(type); + std::shared_ptr pad = gamepad(type); if (!pad) { return {}; } diff --git a/src/platform/qt/InputController.h b/src/platform/qt/InputController.h index 6f2326cbd..06871ff1e 100644 --- a/src/platform/qt/InputController.h +++ b/src/platform/qt/InputController.h @@ -143,8 +143,8 @@ private: static int claimPlayer(); static void freePlayer(int); - Gamepad* gamepad(uint32_t type); - QList gamepads(); + std::shared_ptr gamepad(uint32_t type); + QList> gamepads(); QSet activeGamepadButtons(uint32_t type); QSet> activeGamepadAxes(uint32_t type); diff --git a/src/platform/qt/input/InputDriver.cpp b/src/platform/qt/input/InputDriver.cpp index f76649bd8..3f805f411 100644 --- a/src/platform/qt/input/InputDriver.cpp +++ b/src/platform/qt/input/InputDriver.cpp @@ -36,7 +36,7 @@ QList InputDriver::connectedKeySources() const { return {}; } -QList InputDriver::connectedGamepads() const { +QList> InputDriver::connectedGamepads() const { return {}; } @@ -57,8 +57,8 @@ KeySource* InputDriver::activeKeySource() { return ks[activeKeySource]; } -Gamepad* InputDriver::activeGamepad() { - QList pads(connectedGamepads()); +std::shared_ptr InputDriver::activeGamepad() { + QList> pads(connectedGamepads()); int activeGamepad = activeGamepadIndex(); if (activeGamepad < 0 || activeGamepad >= pads.count()) { return nullptr; diff --git a/src/platform/qt/input/InputDriver.h b/src/platform/qt/input/InputDriver.h index cc0a6e0cd..4b0513f2e 100644 --- a/src/platform/qt/input/InputDriver.h +++ b/src/platform/qt/input/InputDriver.h @@ -9,6 +9,8 @@ #include #include +#include + struct mRotationSource; struct mRumble; @@ -42,13 +44,13 @@ public: virtual bool update() = 0; virtual QList connectedKeySources() const; - virtual QList connectedGamepads() const; + virtual QList> connectedGamepads() const; virtual int activeKeySourceIndex() const; virtual int activeGamepadIndex() const; KeySource* activeKeySource(); - Gamepad* activeGamepad(); + std::shared_ptr activeGamepad(); virtual void setActiveKeySource(int); virtual void setActiveGamepad(int); diff --git a/src/platform/qt/input/SDLInputDriver.cpp b/src/platform/qt/input/SDLInputDriver.cpp index 5b68462d1..e3a77094f 100644 --- a/src/platform/qt/input/SDLInputDriver.cpp +++ b/src/platform/qt/input/SDLInputDriver.cpp @@ -139,10 +139,10 @@ bool SDLInputDriver::update() { return true; } -QList SDLInputDriver::connectedGamepads() const { - QList pads; +QList> SDLInputDriver::connectedGamepads() const { + QList> pads; for (auto& pad : m_gamepads) { - pads.append(pad.get()); + pads.append(pad); } return pads; } diff --git a/src/platform/qt/input/SDLInputDriver.h b/src/platform/qt/input/SDLInputDriver.h index 0ca2f4030..61f1e6238 100644 --- a/src/platform/qt/input/SDLInputDriver.h +++ b/src/platform/qt/input/SDLInputDriver.h @@ -44,7 +44,7 @@ public: bool update() override; - QList connectedGamepads() const override; + QList> connectedGamepads() const override; int activeGamepadIndex() const override; void setActiveGamepad(int) override; diff --git a/src/platform/qt/scripting/ScriptingController.cpp b/src/platform/qt/scripting/ScriptingController.cpp index f4c5092c1..95180d1de 100644 --- a/src/platform/qt/scripting/ScriptingController.cpp +++ b/src/platform/qt/scripting/ScriptingController.cpp @@ -264,7 +264,7 @@ void ScriptingController::updateGamepad() { detachGamepad(); return; } - Gamepad* gamepad = driver->activeGamepad(); + std::shared_ptr gamepad = driver->activeGamepad(); if (!gamepad) { detachGamepad(); return;