From 1d357e17c8db600e8564e22ad135fe8972750bb9 Mon Sep 17 00:00:00 2001 From: flightlessmango Date: Fri, 22 Dec 2023 02:57:35 +0100 Subject: [PATCH] autostart_log: rework without threading Using any kind of sleep or while loop causes a crash when running in wine. So let's not do that. --- src/logging.h | 1 + src/overlay.cpp | 7 +++++++ src/overlay_params.cpp | 2 -- 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/logging.h b/src/logging.h index 9f6c70d3..309cdb73 100644 --- a/src/logging.h +++ b/src/logging.h @@ -60,6 +60,7 @@ public: std::string output_folder; const int64_t log_interval; const int64_t log_duration; + bool autostart_init = false; private: std::vector m_log_array; diff --git a/src/overlay.cpp b/src/overlay.cpp index 82d97d03..45f7fc4c 100644 --- a/src/overlay.cpp +++ b/src/overlay.cpp @@ -275,6 +275,13 @@ void update_hud_info_with_frametime(struct swapchain_stats& sw_stats, const stru sw_stats.time = time.str(); } + if (params.autostart_log && logger && !logger->autostart_init) { + if ((std::chrono::steady_clock::now() - HUDElements.overlay_start) > std::chrono::seconds(params.autostart_log)){ + logger->start_logging(); + logger->autostart_init = true; + } + } + sw_stats.n_frames_since_update = 0; sw_stats.last_fps_update = now; diff --git a/src/overlay_params.cpp b/src/overlay_params.cpp index bf6fb8ae..d513f028 100644 --- a/src/overlay_params.cpp +++ b/src/overlay_params.cpp @@ -972,8 +972,6 @@ parse_overlay_config(struct overlay_params *params, logger->stop_logging(); } logger = std::make_unique(params); - if(params->autostart_log && !logger->is_active()) - std::thread(autostart_log, params->autostart_log).detach(); #ifdef MANGOAPP { extern bool new_frame;