From b117da5ccfb996af92529ac89b06315b3d9f7928 Mon Sep 17 00:00:00 2001 From: Green Sky Date: Sat, 13 Jan 2024 18:38:12 +0100 Subject: [PATCH] add compute powersave extreme --- src/main_screen.cpp | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/src/main_screen.cpp b/src/main_screen.cpp index 1e7245f..e8c2c83 100644 --- a/src/main_screen.cpp +++ b/src/main_screen.cpp @@ -183,7 +183,7 @@ Screen* MainScreen::render(float time_delta, bool&) { } { // compute - const auto targets = "normal\0powersave\0"; + const auto targets = "normal\0powersave\0extreme powersave\0"; ImGui::SetNextItemWidth(ImGui::GetFontSize()*10); ImGui::Combo("compute mode", &_compute_perf_mode, targets, 4); ImGui::SetItemTooltip("Limiting compute can slow down things like filetransfers!"); @@ -237,15 +237,21 @@ Screen* MainScreen::tick(float time_delta, bool& quit) { mts.iterate(); // compute - _min_tick_interval = std::max( - std::min( - tc.toxIterationInterval()/1000.f, - pm_interval - //0.03f // HACK: 30ms upper bound, should be the same as tox but will change - ), - (_compute_perf_mode == 0 ? 0.001f : 0.1f) // in powersave fix the lowerbound to 100ms + _min_tick_interval = std::min( + tc.toxIterationInterval()/1000.f, + pm_interval ); + switch (_compute_perf_mode) { + // normal 1ms lower bound + case 0: _min_tick_interval = std::max(_min_tick_interval, 0.001f); break; + // in powersave fix the lowerbound to 100ms + case 1: _min_tick_interval = std::max(_min_tick_interval, 0.1f); break; + // extreme 2s + case 2: _min_tick_interval = std::max(_min_tick_interval, 2.f); break; + default: std::cerr << "unknown compute perf mode\n"; std::exit(-1); + } + return nullptr; }