From 83ce3ace2dbf582bc0c5be0f649108a12350a705 Mon Sep 17 00:00:00 2001 From: Emil Velikov Date: Sun, 6 Mar 2022 12:43:06 +0000 Subject: [PATCH] keybinds: move ifdef spaghetti into the header Drop the ifdef and simplify the .cpp file. Signed-off-by: Emil Velikov --- src/keybinds.cpp | 115 ++++++++++++++++------------------------------- src/keybinds.h | 10 +++-- 2 files changed, 45 insertions(+), 80 deletions(-) diff --git a/src/keybinds.cpp b/src/keybinds.cpp index d22da447..04ae5f7e 100644 --- a/src/keybinds.cpp +++ b/src/keybinds.cpp @@ -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(std::chrono::duration(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(std::chrono::duration(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(std::chrono::duration(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(std::chrono::duration(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(); } } diff --git a/src/keybinds.h b/src/keybinds.h index 3aee726a..83dff612 100644 --- a/src/keybinds.h +++ b/src/keybinds.h @@ -13,7 +13,7 @@ typedef unsigned long KeySym; Clock::time_point last_f2_press, toggle_fps_limit_press , last_f12_press, reload_cfg_press, last_upload_press; -#ifdef HAVE_X11 +#if defined(HAVE_X11) bool keys_are_pressed(const std::vector& keys) { if (!init_x11()) @@ -39,9 +39,7 @@ bool keys_are_pressed(const std::vector& keys) { return false; } -#endif //HAVE_X11 - -#ifdef _WIN32 +#elif defined(_WIN32) #include bool keys_are_pressed(const std::vector& keys) { size_t pressed = 0; @@ -57,6 +55,10 @@ bool keys_are_pressed(const std::vector& keys) { return false; } +#else // XXX: Add wayland support +bool keys_are_pressed(const std::vector& keys) { + return false; +} #endif #endif //MANGOHUD_KEYBINDS_H