|
|
|
@ -5,7 +5,6 @@
|
|
|
|
|
|
|
|
|
|
void check_keybinds(struct overlay_params& params, uint32_t vendorID){
|
|
|
|
|
using namespace std::chrono_literals;
|
|
|
|
|
bool pressed = false; // FIXME just a placeholder until wayland support
|
|
|
|
|
auto now = Clock::now(); /* us */
|
|
|
|
|
auto elapsedF2 = now - last_f2_press;
|
|
|
|
|
auto elapsedFpsLimitToggle = now - toggle_fps_limit_press;
|
|
|
|
@ -20,95 +19,59 @@ void check_keybinds(struct overlay_params& params, uint32_t vendorID){
|
|
|
|
|
|
|
|
|
|
auto keyPressDelay = 400ms;
|
|
|
|
|
|
|
|
|
|
if (elapsedF2 >= keyPressDelay){
|
|
|
|
|
#if defined(HAVE_X11) || defined(_WIN32)
|
|
|
|
|
pressed = keys_are_pressed(params.toggle_logging);
|
|
|
|
|
#else
|
|
|
|
|
pressed = false;
|
|
|
|
|
#endif
|
|
|
|
|
if (pressed) {
|
|
|
|
|
last_f2_press = now;
|
|
|
|
|
if (logger->is_active()) {
|
|
|
|
|
if (elapsedF2 >= keyPressDelay &&
|
|
|
|
|
keys_are_pressed(params.toggle_logging)) {
|
|
|
|
|
last_f2_press = now;
|
|
|
|
|
if (logger->is_active()) {
|
|
|
|
|
logger->stop_logging();
|
|
|
|
|
} else {
|
|
|
|
|
} else {
|
|
|
|
|
logger->start_logging();
|
|
|
|
|
std::thread(update_hw_info, std::ref(params), vendorID)
|
|
|
|
|
.detach();
|
|
|
|
|
std::thread(update_hw_info, std::ref(params), vendorID).detach();
|
|
|
|
|
benchmark.fps_data.clear();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (elapsedFpsLimitToggle >= keyPressDelay){
|
|
|
|
|
#if defined(HAVE_X11) || defined(_WIN32)
|
|
|
|
|
pressed = keys_are_pressed(params.toggle_fps_limit);
|
|
|
|
|
#else
|
|
|
|
|
pressed = false;
|
|
|
|
|
#endif
|
|
|
|
|
if (pressed){
|
|
|
|
|
toggle_fps_limit_press = now;
|
|
|
|
|
for (size_t i = 0; i < params.fps_limit.size(); i++){
|
|
|
|
|
uint32_t fps_limit = params.fps_limit[i];
|
|
|
|
|
// current fps limit equals vector entry, use next / first
|
|
|
|
|
if((fps_limit > 0 && fps_limit_stats.targetFrameTime == std::chrono::duration_cast<Clock::duration>(std::chrono::duration<double>(1) / params.fps_limit[i]))
|
|
|
|
|
|| (fps_limit == 0 && fps_limit_stats.targetFrameTime == fps_limit_stats.targetFrameTime.zero())) {
|
|
|
|
|
uint32_t newFpsLimit = i+1 == params.fps_limit.size() ? params.fps_limit[0] : params.fps_limit[i+1];
|
|
|
|
|
if(newFpsLimit > 0) {
|
|
|
|
|
fps_limit_stats.targetFrameTime = std::chrono::duration_cast<Clock::duration>(std::chrono::duration<double>(1) / newFpsLimit);
|
|
|
|
|
} else {
|
|
|
|
|
fps_limit_stats.targetFrameTime = {};
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
if (elapsedFpsLimitToggle >= keyPressDelay &&
|
|
|
|
|
keys_are_pressed(params.toggle_fps_limit)) {
|
|
|
|
|
toggle_fps_limit_press = now;
|
|
|
|
|
for (size_t i = 0; i < params.fps_limit.size(); i++){
|
|
|
|
|
uint32_t fps_limit = params.fps_limit[i];
|
|
|
|
|
// current fps limit equals vector entry, use next / first
|
|
|
|
|
if((fps_limit > 0 && fps_limit_stats.targetFrameTime == std::chrono::duration_cast<Clock::duration>(std::chrono::duration<double>(1) / params.fps_limit[i]))
|
|
|
|
|
|| (fps_limit == 0 && fps_limit_stats.targetFrameTime == fps_limit_stats.targetFrameTime.zero())) {
|
|
|
|
|
uint32_t newFpsLimit = i+1 == params.fps_limit.size() ? params.fps_limit[0] : params.fps_limit[i+1];
|
|
|
|
|
if(newFpsLimit > 0) {
|
|
|
|
|
fps_limit_stats.targetFrameTime = std::chrono::duration_cast<Clock::duration>(std::chrono::duration<double>(1) / newFpsLimit);
|
|
|
|
|
} else {
|
|
|
|
|
fps_limit_stats.targetFrameTime = {};
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (elapsedF12 >= keyPressDelay){
|
|
|
|
|
#if defined(HAVE_X11) || defined(_WIN32)
|
|
|
|
|
pressed = keys_are_pressed(params.toggle_hud);
|
|
|
|
|
#else
|
|
|
|
|
pressed = false;
|
|
|
|
|
#endif
|
|
|
|
|
if (pressed){
|
|
|
|
|
last_f12_press = now;
|
|
|
|
|
params.no_display = !params.no_display;
|
|
|
|
|
}
|
|
|
|
|
if (elapsedF12 >= keyPressDelay &&
|
|
|
|
|
keys_are_pressed(params.toggle_hud)) {
|
|
|
|
|
last_f12_press = now;
|
|
|
|
|
params.no_display = !params.no_display;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (elapsedReloadCfg >= keyPressDelay){
|
|
|
|
|
#if defined(HAVE_X11) || defined(_WIN32)
|
|
|
|
|
pressed = keys_are_pressed(params.reload_cfg);
|
|
|
|
|
#else
|
|
|
|
|
pressed = false;
|
|
|
|
|
#endif
|
|
|
|
|
if (pressed){
|
|
|
|
|
parse_overlay_config(¶ms, getenv("MANGOHUD_CONFIG"));
|
|
|
|
|
_params = ¶ms;
|
|
|
|
|
reload_cfg_press = now;
|
|
|
|
|
}
|
|
|
|
|
if (elapsedReloadCfg >= keyPressDelay &&
|
|
|
|
|
keys_are_pressed(params.reload_cfg)) {
|
|
|
|
|
parse_overlay_config(¶ms, getenv("MANGOHUD_CONFIG"));
|
|
|
|
|
_params = ¶ms;
|
|
|
|
|
reload_cfg_press = now;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (params.permit_upload && elapsedUpload >= keyPressDelay){
|
|
|
|
|
#if defined(HAVE_X11) || defined(_WIN32)
|
|
|
|
|
pressed = keys_are_pressed(params.upload_log);
|
|
|
|
|
#else
|
|
|
|
|
pressed = false;
|
|
|
|
|
#endif
|
|
|
|
|
if (pressed){
|
|
|
|
|
last_upload_press = now;
|
|
|
|
|
logger->upload_last_log();
|
|
|
|
|
}
|
|
|
|
|
if (params.permit_upload && elapsedUpload >= keyPressDelay &&
|
|
|
|
|
keys_are_pressed(params.upload_log)) {
|
|
|
|
|
last_upload_press = now;
|
|
|
|
|
logger->upload_last_log();
|
|
|
|
|
}
|
|
|
|
|
if (params.permit_upload && elapsedUpload >= keyPressDelay){
|
|
|
|
|
#if defined(HAVE_X11) || defined(_WIN32)
|
|
|
|
|
pressed = keys_are_pressed(params.upload_logs);
|
|
|
|
|
#else
|
|
|
|
|
pressed = false;
|
|
|
|
|
#endif
|
|
|
|
|
if (pressed){
|
|
|
|
|
last_upload_press = now;
|
|
|
|
|
logger->upload_last_logs();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (params.permit_upload && elapsedUpload >= keyPressDelay &&
|
|
|
|
|
keys_are_pressed(params.upload_logs)) {
|
|
|
|
|
last_upload_press = now;
|
|
|
|
|
logger->upload_last_logs();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|