diff options
| author | 2020-06-22 18:11:59 -0400 | |
|---|---|---|
| committer | 2020-06-22 18:11:59 -0400 | |
| commit | fcc23139f622963c86e7f53c8b96f6f214294032 (patch) | |
| tree | 2b5bfcd86162b19a23c4c50e7fa8a794be44b3da /src/input_common/gcadapter/gc_adapter.cpp | |
| parent | update libusb dependency (diff) | |
| download | yuzu-fcc23139f622963c86e7f53c8b96f6f214294032.tar.gz yuzu-fcc23139f622963c86e7f53c8b96f6f214294032.tar.xz yuzu-fcc23139f622963c86e7f53c8b96f6f214294032.zip | |
std::array and const reference passing of non-trivial objects
Diffstat (limited to 'src/input_common/gcadapter/gc_adapter.cpp')
| -rw-r--r-- | src/input_common/gcadapter/gc_adapter.cpp | 21 |
1 files changed, 10 insertions, 11 deletions
diff --git a/src/input_common/gcadapter/gc_adapter.cpp b/src/input_common/gcadapter/gc_adapter.cpp index e3bcb24f6..745f1be27 100644 --- a/src/input_common/gcadapter/gc_adapter.cpp +++ b/src/input_common/gcadapter/gc_adapter.cpp | |||
| @@ -21,7 +21,7 @@ Adapter::Adapter() { | |||
| 21 | StartScanThread(); | 21 | StartScanThread(); |
| 22 | } | 22 | } |
| 23 | 23 | ||
| 24 | GCPadStatus Adapter::CheckStatus(int port, u8 adapter_payload[37]) { | 24 | GCPadStatus Adapter::CheckStatus(int port, const std::array<u8, 37>& adapter_payload) { |
| 25 | GCPadStatus pad = {}; | 25 | GCPadStatus pad = {}; |
| 26 | bool get_origin = false; | 26 | bool get_origin = false; |
| 27 | 27 | ||
| @@ -88,7 +88,7 @@ GCPadStatus Adapter::CheckStatus(int port, u8 adapter_payload[37]) { | |||
| 88 | return pad; | 88 | return pad; |
| 89 | } | 89 | } |
| 90 | 90 | ||
| 91 | void Adapter::PadToState(GCPadStatus pad, GCState& state) { | 91 | void Adapter::PadToState(const GCPadStatus& pad, GCState& state) { |
| 92 | state.buttons.insert_or_assign(PAD_BUTTON_A, pad.button & PAD_BUTTON_A); | 92 | state.buttons.insert_or_assign(PAD_BUTTON_A, pad.button & PAD_BUTTON_A); |
| 93 | state.buttons.insert_or_assign(PAD_BUTTON_B, pad.button & PAD_BUTTON_B); | 93 | state.buttons.insert_or_assign(PAD_BUTTON_B, pad.button & PAD_BUTTON_B); |
| 94 | state.buttons.insert_or_assign(PAD_BUTTON_X, pad.button & PAD_BUTTON_X); | 94 | state.buttons.insert_or_assign(PAD_BUTTON_X, pad.button & PAD_BUTTON_X); |
| @@ -112,15 +112,15 @@ void Adapter::PadToState(GCPadStatus pad, GCState& state) { | |||
| 112 | void Adapter::Read() { | 112 | void Adapter::Read() { |
| 113 | LOG_INFO(Input, "GC Adapter Read() thread started"); | 113 | LOG_INFO(Input, "GC Adapter Read() thread started"); |
| 114 | 114 | ||
| 115 | int payload_size_in; | 115 | int payload_size_in, payload_size; |
| 116 | u8 adapter_payload[37]; | 116 | std::array<u8, 37> adapter_payload; |
| 117 | std::array<u8, 37> controller_payload_copy; | ||
| 118 | std::array<GCPadStatus, 4> pad; | ||
| 119 | |||
| 117 | while (adapter_thread_running) { | 120 | while (adapter_thread_running) { |
| 118 | libusb_interrupt_transfer(usb_adapter_handle, input_endpoint, adapter_payload, | 121 | libusb_interrupt_transfer(usb_adapter_handle, input_endpoint, adapter_payload.data(), |
| 119 | sizeof(adapter_payload), &payload_size_in, 32); | 122 | sizeof(adapter_payload), &payload_size_in, 32); |
| 120 | 123 | payload_size = 0; | |
| 121 | int payload_size = 0; | ||
| 122 | u8 controller_payload_copy[37]; | ||
| 123 | |||
| 124 | { | 124 | { |
| 125 | std::lock_guard<std::mutex> lk(s_mutex); | 125 | std::lock_guard<std::mutex> lk(s_mutex); |
| 126 | std::copy(std::begin(adapter_payload), std::end(adapter_payload), | 126 | std::copy(std::begin(adapter_payload), std::end(adapter_payload), |
| @@ -128,7 +128,6 @@ void Adapter::Read() { | |||
| 128 | payload_size = payload_size_in; | 128 | payload_size = payload_size_in; |
| 129 | } | 129 | } |
| 130 | 130 | ||
| 131 | std::array<GCPadStatus, 4> pad; | ||
| 132 | if (payload_size != sizeof(controller_payload_copy) || | 131 | if (payload_size != sizeof(controller_payload_copy) || |
| 133 | controller_payload_copy[0] != LIBUSB_DT_HID) { | 132 | controller_payload_copy[0] != LIBUSB_DT_HID) { |
| 134 | LOG_ERROR(Input, "error reading payload (size: %d, type: %02x)", payload_size, | 133 | LOG_ERROR(Input, "error reading payload (size: %d, type: %02x)", payload_size, |
| @@ -365,4 +364,4 @@ const std::array<GCState, 4>& Adapter::GetPadState() const { | |||
| 365 | return state; | 364 | return state; |
| 366 | } | 365 | } |
| 367 | 366 | ||
| 368 | } // end of namespace GCAdapter | 367 | } // namespace GCAdapter |