From 9ce6ea648f7cb51f5411d3e0753ef9a3439381c5 Mon Sep 17 00:00:00 2001 From: Lioncash Date: Sun, 12 Jul 2020 15:36:27 -0400 Subject: [PATCH 1/5] gc_adapter: Silence sign conversion warnings --- src/input_common/gcadapter/gc_adapter.cpp | 8 ++++---- src/input_common/gcadapter/gc_adapter.h | 6 +++--- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/input_common/gcadapter/gc_adapter.cpp b/src/input_common/gcadapter/gc_adapter.cpp index 6d9f4d9eb0..9fa170711a 100644 --- a/src/input_common/gcadapter/gc_adapter.cpp +++ b/src/input_common/gcadapter/gc_adapter.cpp @@ -33,7 +33,7 @@ Adapter::Adapter() { } } -GCPadStatus Adapter::GetPadStatus(int port, const std::array& adapter_payload) { +GCPadStatus Adapter::GetPadStatus(std::size_t port, const std::array& adapter_payload) { GCPadStatus pad = {}; bool get_origin = false; @@ -227,7 +227,7 @@ void Adapter::Setup() { } if (devices != nullptr) { - for (std::size_t index = 0; index < device_count; ++index) { + for (std::size_t index = 0; index < static_cast(device_count); ++index) { if (CheckDeviceAccess(devices[index])) { // GC Adapter found and accessible, registering it GetGCEndpoint(devices[index]); @@ -357,11 +357,11 @@ void Adapter::Reset() { } } -bool Adapter::DeviceConnected(int port) { +bool Adapter::DeviceConnected(std::size_t port) { return adapter_controllers_status[port] != ControllerTypes::None; } -void Adapter::ResetDeviceType(int port) { +void Adapter::ResetDeviceType(std::size_t port) { adapter_controllers_status[port] = ControllerTypes::None; } diff --git a/src/input_common/gcadapter/gc_adapter.h b/src/input_common/gcadapter/gc_adapter.h index b1c2a1958b..250c2275a8 100644 --- a/src/input_common/gcadapter/gc_adapter.h +++ b/src/input_common/gcadapter/gc_adapter.h @@ -104,7 +104,7 @@ public: const std::array& GetPadState() const; private: - GCPadStatus GetPadStatus(int port, const std::array& adapter_payload); + GCPadStatus GetPadStatus(std::size_t port, const std::array& adapter_payload); void PadToState(const GCPadStatus& pad, GCState& state); @@ -117,10 +117,10 @@ private: void StopScanThread(); /// Returns true if there is a device connected to port - bool DeviceConnected(int port); + bool DeviceConnected(std::size_t port); /// Resets status of device connected to port - void ResetDeviceType(int port); + void ResetDeviceType(std::size_t port); /// Returns true if we successfully gain access to GC Adapter bool CheckDeviceAccess(libusb_device* device); From 32b6fc40622a838d4785d5e2dbea4ee17447c362 Mon Sep 17 00:00:00 2001 From: Lioncash Date: Sun, 12 Jul 2020 15:38:16 -0400 Subject: [PATCH 2/5] gc_adapter: Remove deprecated usage of = in lambda captures It's deprecated in C++20 to use = to capture the this pointer. Instead, we can simply pass this as an argument to the thread constructor. --- src/input_common/gcadapter/gc_adapter.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/input_common/gcadapter/gc_adapter.cpp b/src/input_common/gcadapter/gc_adapter.cpp index 9fa170711a..70d382bcf9 100644 --- a/src/input_common/gcadapter/gc_adapter.cpp +++ b/src/input_common/gcadapter/gc_adapter.cpp @@ -198,7 +198,7 @@ void Adapter::StartScanThread() { } detect_thread_running = true; - detect_thread = std::thread([=] { ScanThreadFunc(); }); + detect_thread = std::thread(&Adapter::ScanThreadFunc, this); } void Adapter::StopScanThread() { From a8ba6dc3c9f876835d706d90b27249e2984d526e Mon Sep 17 00:00:00 2001 From: Lioncash Date: Sun, 12 Jul 2020 15:40:22 -0400 Subject: [PATCH 3/5] gc_poller: Silence sign conversion warnings --- src/input_common/gcadapter/gc_poller.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/input_common/gcadapter/gc_poller.cpp b/src/input_common/gcadapter/gc_poller.cpp index 385ce84301..ead1a1b0e7 100644 --- a/src/input_common/gcadapter/gc_poller.cpp +++ b/src/input_common/gcadapter/gc_poller.cpp @@ -249,7 +249,7 @@ Common::ParamPackage GCAnalogFactory::GetNextInput() { const u8 axis = static_cast(pad.axis); if (analog_x_axis == -1) { analog_x_axis = axis; - controller_number = port; + controller_number = static_cast(port); } else if (analog_y_axis == -1 && analog_x_axis != axis && controller_number == port) { analog_y_axis = axis; } From 839c91cd14d65d0d62a946078aa62657530fd55a Mon Sep 17 00:00:00 2001 From: Lioncash Date: Sun, 12 Jul 2020 15:41:32 -0400 Subject: [PATCH 4/5] gc_poller: Get rid of undefined behavior in Create() Ensures that the function always has returns in all control paths. --- src/input_common/gcadapter/gc_poller.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/input_common/gcadapter/gc_poller.cpp b/src/input_common/gcadapter/gc_poller.cpp index ead1a1b0e7..d9296c496f 100644 --- a/src/input_common/gcadapter/gc_poller.cpp +++ b/src/input_common/gcadapter/gc_poller.cpp @@ -6,6 +6,7 @@ #include #include #include +#include "common/assert.h" #include "common/threadsafe_queue.h" #include "input_common/gcadapter/gc_adapter.h" #include "input_common/gcadapter/gc_poller.h" @@ -94,6 +95,9 @@ std::unique_ptr GCButtonFactory::Create(const Common::Param return std::make_unique(port, axis, threshold, trigger_if_greater, adapter.get()); } + + UNREACHABLE(); + return nullptr; } Common::ParamPackage GCButtonFactory::GetNextInput() { From a1dddca4ab83cb63463134db11ed3585d8bd91f1 Mon Sep 17 00:00:00 2001 From: Lioncash Date: Sun, 12 Jul 2020 15:43:05 -0400 Subject: [PATCH 5/5] gc_poller: Mark GCButtonFactory::GetNextInput() as const This doesn't modify class instance state. --- src/input_common/gcadapter/gc_poller.cpp | 2 +- src/input_common/gcadapter/gc_poller.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/input_common/gcadapter/gc_poller.cpp b/src/input_common/gcadapter/gc_poller.cpp index d9296c496f..bddfa102fe 100644 --- a/src/input_common/gcadapter/gc_poller.cpp +++ b/src/input_common/gcadapter/gc_poller.cpp @@ -100,7 +100,7 @@ std::unique_ptr GCButtonFactory::Create(const Common::Param return nullptr; } -Common::ParamPackage GCButtonFactory::GetNextInput() { +Common::ParamPackage GCButtonFactory::GetNextInput() const { Common::ParamPackage params; GCAdapter::GCPadStatus pad; auto& queue = adapter->GetPadQueue(); diff --git a/src/input_common/gcadapter/gc_poller.h b/src/input_common/gcadapter/gc_poller.h index e96af7d51a..0527f328f2 100644 --- a/src/input_common/gcadapter/gc_poller.h +++ b/src/input_common/gcadapter/gc_poller.h @@ -25,7 +25,7 @@ public: */ std::unique_ptr Create(const Common::ParamPackage& params) override; - Common::ParamPackage GetNextInput(); + Common::ParamPackage GetNextInput() const; /// For device input configuration/polling void BeginConfiguration();