keybinds: move ifdef spaghetti into the header

Drop the ifdef and simplify the .cpp file.

Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
pull/703/head
Emil Velikov 2 years ago
parent 1ed88154b1
commit 83ce3ace2d

@ -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(&params, getenv("MANGOHUD_CONFIG"));
_params = &params;
reload_cfg_press = now;
}
if (elapsedReloadCfg >= keyPressDelay &&
keys_are_pressed(params.reload_cfg)) {
parse_overlay_config(&params, getenv("MANGOHUD_CONFIG"));
_params = &params;
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();
}
}

@ -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<KeySym>& keys) {
if (!init_x11())
@ -39,9 +39,7 @@ bool keys_are_pressed(const std::vector<KeySym>& keys) {
return false;
}
#endif //HAVE_X11
#ifdef _WIN32
#elif defined(_WIN32)
#include <windows.h>
bool keys_are_pressed(const std::vector<KeySym>& keys) {
size_t pressed = 0;
@ -57,6 +55,10 @@ bool keys_are_pressed(const std::vector<KeySym>& keys) {
return false;
}
#else // XXX: Add wayland support
bool keys_are_pressed(const std::vector<KeySym>& keys) {
return false;
}
#endif
#endif //MANGOHUD_KEYBINDS_H

Loading…
Cancel
Save