From d52405935f429eed2e66cf125e47df95f6dea111 Mon Sep 17 00:00:00 2001 From: capitalistspz Date: Thu, 26 Sep 2024 21:37:12 +0100 Subject: [PATCH] Stop using `std::jthread`, because Mac doesn't support it --- src/input/api/Wiimote/WiimoteControllerProvider.cpp | 7 ++++--- src/input/api/Wiimote/WiimoteControllerProvider.h | 4 ++-- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/src/input/api/Wiimote/WiimoteControllerProvider.cpp b/src/input/api/Wiimote/WiimoteControllerProvider.cpp index 731e6742..bb063a87 100644 --- a/src/input/api/Wiimote/WiimoteControllerProvider.cpp +++ b/src/input/api/Wiimote/WiimoteControllerProvider.cpp @@ -16,7 +16,7 @@ WiimoteControllerProvider::WiimoteControllerProvider() { m_reader_thread = std::thread(&WiimoteControllerProvider::reader_thread, this); m_writer_thread = std::thread(&WiimoteControllerProvider::writer_thread, this); - m_connectionThread = std::jthread(&WiimoteControllerProvider::connectionThread, this); + m_connectionThread = std::thread(&WiimoteControllerProvider::connectionThread, this); } WiimoteControllerProvider::~WiimoteControllerProvider() @@ -26,6 +26,7 @@ WiimoteControllerProvider::~WiimoteControllerProvider() m_running = false; m_writer_thread.join(); m_reader_thread.join(); + m_connectionThread.join(); } } @@ -143,10 +144,10 @@ WiimoteControllerProvider::WiimoteState WiimoteControllerProvider::get_state(siz return {}; } -void WiimoteControllerProvider::connectionThread(std::stop_token stopToken) +void WiimoteControllerProvider::connectionThread() { SetThreadName("Wiimote-connect"); - while (!stopToken.stop_requested()) + while (m_running.load(std::memory_order_relaxed)) { std::vector devices; #if HAS_HIDAPI diff --git a/src/input/api/Wiimote/WiimoteControllerProvider.h b/src/input/api/Wiimote/WiimoteControllerProvider.h index 9b191bdb..90f28d5c 100644 --- a/src/input/api/Wiimote/WiimoteControllerProvider.h +++ b/src/input/api/Wiimote/WiimoteControllerProvider.h @@ -79,7 +79,7 @@ private: std::thread m_reader_thread, m_writer_thread; std::shared_mutex m_device_mutex; - std::jthread m_connectionThread; + std::thread m_connectionThread; std::vector m_connectedDevices; std::mutex m_connectedDeviceMutex; struct Wiimote @@ -104,7 +104,7 @@ private: void reader_thread(); void writer_thread(); - void connectionThread(std::stop_token); + void connectionThread(); void calibrate(size_t index); IRMode set_ir_camera(size_t index, bool state);