Add universal param

wip
FlightlessMango 3 years ago
parent ad25e19e7b
commit 1237395641

@ -71,6 +71,7 @@ void imgui_init()
return;
parse_overlay_config(&params, getenv("MANGOHUD_CONFIG"));
_params = params;
//check for blacklist item in the config file
for (auto& item : params.blacklist) {

@ -85,6 +85,7 @@ void check_keybinds(struct swapchain_stats& sw_stats, struct overlay_params& par
#endif
if (pressed){
parse_overlay_config(&params, getenv("MANGOHUD_CONFIG"));
_params = params;
reload_cfg_press = now;
}
}

@ -7,6 +7,7 @@
#include <sstream>
#include <iomanip>
#include "file_utils.h"
#include "string_utils.h"
string os, cpu, gpu, ram, kernel, driver, cpu_governor;
bool sysInfoFetched = false;
@ -134,12 +135,11 @@ string get_log_suffix(){
return log_name;
}
void logging(void *params_void){
overlay_params *params = reinterpret_cast<overlay_params *>(params_void);
void logging(){
logger->wait_until_data_valid();
while (logger->is_active()){
logger->try_log();
this_thread::sleep_for(chrono::milliseconds(params->log_interval));
this_thread::sleep_for(chrono::milliseconds(_params.log_interval));
}
}
@ -159,12 +159,12 @@ void Logger::start_logging() {
m_logging_on = true;
m_log_start = Clock::now();
if (m_params->log_name.empty())
m_log_files.emplace_back(m_params->output_folder + "/" + get_program_name() + "_" + get_log_suffix());
if (_params.log_name.empty())
m_log_files.emplace_back(_params.output_folder + "/" + get_program_name() + "_" + get_log_suffix());
else
m_log_files.emplace_back(m_params->output_folder + "/" + m_params->log_name + ".csv");
m_log_files.emplace_back(_params.output_folder + "/" + _params.log_name + ".csv");
if (m_params->autostart_log){
if (_params.autostart_log){
printf("Named log file: %s\n", m_log_files.back().c_str());
currentLogFile.open(m_log_files.back(), ios::out | ios::app);
printf("Opened log file\n");
@ -183,8 +183,8 @@ void Logger::start_logging() {
}
printf("Wrote info to log file\n");
}
if((!m_params->output_folder.empty()) && (m_params->log_interval != 0)){
std::thread(logging, m_params).detach();
if((!_params.output_folder.empty()) && (_params.log_interval != 0)){
std::thread(logging).detach();
}
}
@ -193,17 +193,17 @@ void Logger::stop_logging() {
m_logging_on = false;
m_log_end = Clock::now();
std::thread(calculate_benchmark_data, m_params).detach();
calculate_benchmark_data();
if(!m_params->output_folder.empty() && !m_params->autostart_log) {
if(!_params.output_folder.empty() && !_params.autostart_log) {
std::string program = get_wine_exe_name();
if (program.empty())
program = get_program_name();
if (m_params->log_name.empty())
m_log_files.emplace_back(m_params->output_folder + "/" + program + "_" + get_log_suffix());
if (_params.log_name.empty())
m_log_files.emplace_back(_params.output_folder + "/" + program + "_" + get_log_suffix());
else
m_log_files.emplace_back(m_params->output_folder + "/" + m_params->log_name + ".csv");
m_log_files.emplace_back(_params.output_folder + "/" + _params.log_name + ".csv");
std::thread(writeFile, m_log_files.back()).detach();
}
@ -222,9 +222,9 @@ void Logger::try_log() {
currentLogData.current_watt = Battery_Stats.current_watt;
#endif
m_log_array.push_back(currentLogData);
if (m_params->autostart_log)
if (_params.autostart_log)
writeFileContinuous(currentLogFile);
if(m_params->log_duration && (elapsedLog >= std::chrono::seconds(m_params->log_duration))){
if(_params.log_duration && (elapsedLog >= std::chrono::seconds(_params.log_duration))){
stop_logging();
}
}

@ -146,9 +146,7 @@ void update_hud_info(struct swapchain_stats& sw_stats, struct overlay_params& pa
gpuvis_trace_printf("[MH] ram_used: %d", memused);
}
void calculate_benchmark_data(void *params_void){
overlay_params *params = reinterpret_cast<overlay_params *>(params_void);
void calculate_benchmark_data(){
vector<float> sorted = benchmark.fps_data;
std::sort(sorted.begin(), sorted.end());
benchmark.percentile_data.clear();
@ -160,7 +158,7 @@ void calculate_benchmark_data(void *params_void){
size_t max_label_size = 0;
for (std::string percentile : params->benchmark_percentiles) {
for (std::string percentile : _params.benchmark_percentiles) {
float result;
// special case handling for a mean-based average

@ -102,6 +102,7 @@ extern struct benchmark_stats benchmark;
extern ImVec2 real_font_size;
extern std::string wineVersion;
extern std::vector<logData> graph_data;
extern overlay_params _params;
void position_layer(struct swapchain_stats& data, struct overlay_params& params, ImVec2 window_size);
void render_imgui(swapchain_stats& data, struct overlay_params& params, ImVec2& window_size, bool is_vulkan);
@ -113,7 +114,7 @@ void check_keybinds(struct swapchain_stats& sw_stats, struct overlay_params& par
void init_system_info(void);
void FpsLimiter(struct fps_limit& stats);
void get_device_name(int32_t vendorID, int32_t deviceID, struct swapchain_stats& sw_stats);
void calculate_benchmark_data(void *params_void);
void calculate_benchmark_data();
void create_fonts(const overlay_params& params, ImFont*& small_font, ImFont*& text_font);
void right_aligned_text(ImVec4& col, float off_x, const char *fmt, ...);
void center_text(std::string& text);

@ -71,6 +71,13 @@ float offset_x, offset_y, hudSpacing;
int hudFirstRow, hudSecondRow;
VkPhysicalDeviceDriverProperties driverProps = {};
int32_t deviceID;
overlay_params _params {};
#if !defined(_WIN32)
namespace MangoHud { namespace GL {
extern swapchain_stats sw_stats;
}}
#endif
/* Mapped from VkInstace/VkPhysicalDevice */
struct instance_data {
@ -2248,6 +2255,7 @@ static VkResult overlay_CreateInstance(
instance_data_map_physical_devices(instance_data, true);
parse_overlay_config(&instance_data->params, getenv("MANGOHUD_CONFIG"));
_params = instance_data->params;
//check for blacklist item in the config file
for (auto& item : instance_data->params.blacklist) {

@ -14,6 +14,7 @@ void init_d3d_shared(){
if (cfg_inited)
return;
parse_overlay_config(&params, getenv("MANGOHUD_CONFIG"));
_params = params;
cfg_inited = true;
// init_cpu_stats(params);
}

Loading…
Cancel
Save