summaryrefslogtreecommitdiff
path: root/Source/Core/InputCommon/GCAdapter.cpp
diff options
context:
space:
mode:
authornyanpasu64 <nyanpasu64@tuta.io>2022-03-27 22:25:40 -0700
committernyanpasu64 <nyanpasu64@tuta.io>2022-03-27 22:27:57 -0700
commit871b01a5d91f2812f98b6ed58f024713e3b1ebe1 (patch)
treeb22c0edc5f6b433db5e14ccac8aea182f7d3b487 /Source/Core/InputCommon/GCAdapter.cpp
parentc08a23b374b852f6a7db8a31996ab4ce52f08805 (diff)
Remove unnecessary atomic usage in GCAdapter.cpp
You can safely read or write non-atomic integers on multiple threads, as long as every thread reading or writing it holds the same mutex while doing so (here, s_mutex). Removing the atomic accesses makes the code faster, but the actual performance difference is probably negligible.
Diffstat (limited to 'Source/Core/InputCommon/GCAdapter.cpp')
-rw-r--r--Source/Core/InputCommon/GCAdapter.cpp7
1 files changed, 4 insertions, 3 deletions
diff --git a/Source/Core/InputCommon/GCAdapter.cpp b/Source/Core/InputCommon/GCAdapter.cpp
index 973d1a1d5f..059b17a5e0 100644
--- a/Source/Core/InputCommon/GCAdapter.cpp
+++ b/Source/Core/InputCommon/GCAdapter.cpp
@@ -51,7 +51,8 @@ static std::mutex s_mutex;
static u8 s_controller_payload[37];
static u8 s_controller_payload_swap[37];
-static std::atomic<int> s_controller_payload_size = {0};
+// Only access with s_mutex held!
+static int s_controller_payload_size = {0};
static std::thread s_adapter_input_thread;
static std::thread s_adapter_output_thread;
@@ -101,7 +102,7 @@ static void Read()
{
std::lock_guard<std::mutex> lk(s_mutex);
std::swap(s_controller_payload_swap, s_controller_payload);
- s_controller_payload_size.store(payload_size);
+ s_controller_payload_size = payload_size;
}
Common::YieldCPU();
@@ -459,7 +460,7 @@ GCPadStatus Input(int chan)
std::lock_guard<std::mutex> lk(s_mutex);
std::copy(std::begin(s_controller_payload), std::end(s_controller_payload),
std::begin(controller_payload_copy));
- payload_size = s_controller_payload_size.load();
+ payload_size = s_controller_payload_size;
}
GCPadStatus pad = {};