diff --git a/src/logging.h b/src/logging.h index 61718756..88b9d8e7 100644 --- a/src/logging.h +++ b/src/logging.h @@ -39,12 +39,13 @@ uint64_t log_start; // logArray.clear(); // } -void *logging(void *){ +void *logging(void *params_test){ + overlay_params *params = reinterpret_cast(params_test); time_t now_log = time(0); tm *log_time = localtime(&now_log); string date = to_string(log_time->tm_year + 1900) + "-" + to_string(1 + log_time->tm_mon) + "-" + to_string(log_time->tm_mday) + "_" + to_string(1 + log_time->tm_hour) + "-" + to_string(1 + log_time->tm_min) + "-" + to_string(1 + log_time->tm_sec); log_start = os_time_get(); - out.open(mangohud_output_env + date, ios::out | ios::app); + out.open(params->output_file + date, ios::out | ios::app); out << "os," << "cpu," << "gpu," << "ram," << "kernel," << "driver" << endl; out << os << "," << cpu << "," << gpu << "," << ram << "," << kernel << "," << driver << endl; while (loggingOn){ diff --git a/src/overlay.cpp b/src/overlay.cpp index e332af95..02469f27 100644 --- a/src/overlay.cpp +++ b/src/overlay.cpp @@ -332,8 +332,6 @@ static struct instance_data *new_instance_data(VkInstance instance) static void destroy_instance_data(struct instance_data *data) { - if (data->params.output_file) - fclose(data->params.output_file); if (data->params.control >= 0) os_socket_close(data->params.control); unmap_object(HKEY(data->instance)); @@ -886,14 +884,14 @@ void check_keybinds(struct overlay_params& params){ elapsedF12 = (double)(now - last_f12_press); elapsedReloadCfg = (double)(now - reload_cfg_press); - if (elapsedF2 >= 500000 && mangohud_output_env){ + if (elapsedF2 >= 500000 && !params.output_file.empty()){ if (key_is_pressed(params.toggle_logging)){ last_f2_press = now; log_start = now; loggingOn = !loggingOn; if (loggingOn && log_period != 0) - pthread_create(&f2, NULL, &logging, NULL); + pthread_create(&f2, NULL, &logging, ¶ms); } } @@ -2622,13 +2620,6 @@ static VkResult overlay_CreateInstance( } } - /* If there's no control file, and an output_file was specified, start - * capturing fps data right away. - */ - instance_data->capture_enabled = - instance_data->params.output_file && instance_data->params.control < 0; - instance_data->capture_started = instance_data->capture_enabled; - return result; } diff --git a/src/overlay_params.cpp b/src/overlay_params.cpp index 27981efe..38b53a70 100644 --- a/src/overlay_params.cpp +++ b/src/overlay_params.cpp @@ -155,6 +155,7 @@ parse_str(const char *str) #define parse_offset_x(s) parse_unsigned(s) #define parse_offset_y(s) parse_unsigned(s) #define parse_time_format(s) parse_str(s) +#define parse_output_file(s) parse_str(s) #define parse_io_read(s) parse_unsigned(s) #define parse_io_write(s) parse_unsigned(s) diff --git a/src/overlay_params.h b/src/overlay_params.h index b57af2ae..a62ae8a5 100644 --- a/src/overlay_params.h +++ b/src/overlay_params.h @@ -115,7 +115,6 @@ enum overlay_param_enabled { struct overlay_params { bool enabled[OVERLAY_PARAM_ENABLED_MAX]; enum overlay_param_position position; - FILE *output_file; int control; uint32_t fps_sampling_period; /* us */ uint32_t fps_limit; @@ -136,7 +135,7 @@ struct overlay_params { KeySym toggle_hud; KeySym toggle_logging; KeySym reload_cfg; - std::string time_format; + std::string time_format, output_file; }; const extern char *overlay_param_names[];