diff options
author | Benji Dial <benji@benjidial.net> | 2023-05-30 22:14:40 -0400 |
---|---|---|
committer | Benji Dial <benji@benjidial.net> | 2023-05-30 22:14:40 -0400 |
commit | 21d36220c869e4e28d437993a082b12b67a2428f (patch) | |
tree | 38240ec9388291a8c089080a175478df3d0f505f /bench | |
parent | a988f6a27db39eac6de698a8d0ad31673c865d41 (diff) | |
download | lib94-21d36220c869e4e28d437993a082b12b67a2428f.tar.gz |
make hyperspeed not update ui so much
Diffstat (limited to 'bench')
-rw-r--r-- | bench/bench_window.cpp | 19 | ||||
-rw-r--r-- | bench/bench_window.hpp | 2 |
2 files changed, 18 insertions, 3 deletions
diff --git a/bench/bench_window.cpp b/bench/bench_window.cpp index 60d44f3..f1035e0 100644 --- a/bench/bench_window.cpp +++ b/bench/bench_window.cpp @@ -141,6 +141,8 @@ const lib94::warrior *bench_window::do_step() { return result; } +static constexpr std::chrono::nanoseconds min_hyperspeed_ui_update_distance(1000000); + void bench_window::runner_main() { std::chrono::system_clock::time_point last_step = std::chrono::system_clock::now(); @@ -154,10 +156,21 @@ void bench_window::runner_main() { break; core_mutex.unlock(); - runner_update_ui_dispatcher.emit(); - if (!runner_hyperspeed) + + if (runner_hyperspeed) { + std::chrono::system_clock::time_point now = std::chrono::system_clock::now(); + if (now - last_hyperspeed_ui_update >= min_hyperspeed_ui_update_distance) { + last_hyperspeed_ui_update = now; + runner_update_ui_dispatcher.emit(); + } + } + + else { + runner_update_ui_dispatcher.emit(); std::this_thread::sleep_until(last_step + time_between_steps); - last_step = std::chrono::system_clock::now(); + last_step = std::chrono::system_clock::now(); + } + core_mutex.lock(); } diff --git a/bench/bench_window.hpp b/bench/bench_window.hpp index 51e8fbe..ae75e51 100644 --- a/bench/bench_window.hpp +++ b/bench/bench_window.hpp @@ -109,6 +109,8 @@ private: std::thread runner; bool runner_active; + std::chrono::system_clock::time_point last_hyperspeed_ui_update; + void update_buttons(); void update_ui(); |