Added background FPS cap

This commit is contained in:
Yousef Khadadeh 2026-06-04 09:21:53 +03:00
parent f99eb66ccf
commit 2dde2015f5
9 changed files with 75 additions and 11 deletions

View file

@ -540,6 +540,32 @@ void MainProgram::input_window_scale_callback(const InputManager::WindowScaleCal
post_callback();
}
void MainProgram::input_window_mouse_focus_gained() {
#ifndef __ANDROID__
update_main_loop_call_rate(conf.mainCallbackRate);
#endif
}
void MainProgram::input_window_mouse_focus_lost() {
#ifndef __ANDROID__
if(!window.mouseFocus && !window.windowFocus)
update_main_loop_call_rate(conf.mainCallbackRateBackground);
#endif
}
void MainProgram::input_window_focus_gained() {
#ifndef __ANDROID__
update_main_loop_call_rate(conf.mainCallbackRate);
#endif
}
void MainProgram::input_window_focus_lost() {
#ifndef __ANDROID__
if(!window.mouseFocus && !window.windowFocus)
update_main_loop_call_rate(conf.mainCallbackRateBackground);
#endif
}
std::optional<InputManager::TextBoxStartInfo> MainProgram::get_text_box_start_info() {
auto toRet = g.get_text_box_start_info();
if(toRet)
@ -552,6 +578,11 @@ void MainProgram::toggle_full_screen() {
SDL_SetWindowFullscreen(window.sdlWindow, window.fullscreen);
}
void MainProgram::update_main_loop_call_rate(unsigned newCallbackRate) {
std::cout << "New main callback rate: " << newCallbackRate << std::endl;
SDL_SetHint(SDL_HINT_MAIN_CALLBACK_RATE, std::to_string(newCallbackRate).c_str());
}
void MainProgram::set_first_screen(std::unique_ptr<Screen> firstScreen) {
set_screen([&](std::unique_ptr<Screen>){ return std::move(firstScreen); });
run_new_screen_func();