summaryrefslogtreecommitdiff
path: root/src/input_common/gcadapter/gc_adapter.cpp
diff options
context:
space:
mode:
authorGravatar Ameer2020-06-22 18:11:59 -0400
committerGravatar Ameer2020-06-22 18:11:59 -0400
commitfcc23139f622963c86e7f53c8b96f6f214294032 (patch)
tree2b5bfcd86162b19a23c4c50e7fa8a794be44b3da /src/input_common/gcadapter/gc_adapter.cpp
parentupdate libusb dependency (diff)
downloadyuzu-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.cpp21
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
24GCPadStatus Adapter::CheckStatus(int port, u8 adapter_payload[37]) { 24GCPadStatus 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
91void Adapter::PadToState(GCPadStatus pad, GCState& state) { 91void 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) {
112void Adapter::Read() { 112void 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