diff options
author | Rodrigo Locatti <rodrigo.locatti@gmail.com> | 2021-06-22 02:31:39 -0300 |
---|---|---|
committer | Rodrigo Locatti <rodrigo.locatti@gmail.com> | 2021-06-22 02:31:39 -0300 |
commit | 0a39163a90de377843d4726154a0247caa928fa1 (patch) | |
tree | 61f2d71b247c125f9b90fcbc96fd1e6ff00046f5 /src/input_common/mouse/mouse_input.cpp | |
parent | 0485b8e84bacbf7fd56081822faca46114cbeb85 (diff) |
input_common/mouse_input: Fix data race
Fix data race using std::jthread and std::stop_token.
Diffstat (limited to 'src/input_common/mouse/mouse_input.cpp')
-rw-r--r-- | src/input_common/mouse/mouse_input.cpp | 16 |
1 files changed, 7 insertions, 9 deletions
diff --git a/src/input_common/mouse/mouse_input.cpp b/src/input_common/mouse/mouse_input.cpp index a335e6da1e..3b052ffb22 100644 --- a/src/input_common/mouse/mouse_input.cpp +++ b/src/input_common/mouse/mouse_input.cpp @@ -2,25 +2,23 @@ // Licensed under GPLv2+ // Refer to the license.txt file included. +#include <stop_token> +#include <thread> + #include "common/settings.h" #include "input_common/mouse/mouse_input.h" namespace MouseInput { Mouse::Mouse() { - update_thread = std::thread(&Mouse::UpdateThread, this); + update_thread = std::jthread([this](std::stop_token stop_token) { UpdateThread(stop_token); }); } -Mouse::~Mouse() { - update_thread_running = false; - if (update_thread.joinable()) { - update_thread.join(); - } -} +Mouse::~Mouse() = default; -void Mouse::UpdateThread() { +void Mouse::UpdateThread(std::stop_token stop_token) { constexpr int update_time = 10; - while (update_thread_running) { + while (!stop_token.stop_requested()) { for (MouseInfo& info : mouse_info) { const Common::Vec3f angular_direction{ -info.tilt_direction.y, |